Tablica dla słów

0

Witam czy może ktoś mi napisać jak zadeklarować tablice dla wielu słów np dla (jeden, dwa, ..., dziesiec)? Wiem że dla jednego słowa można zadeklarować tablicę w ten sposób char slowo[10], czyli deklaruje tablice dla slowa o dlugosci 10 znakow, a jak dla wielu słów? Tablica 2 wymiarowa?

0

Dokładnie moim zadaniem jest zmiana podanej liczby w formie cyfrowej na formę słowną.
Czyli użytkownik podaje 91 a ja mam zmienć na dziewiedziesiat jeden

0

Zależy jak chcesz to deklarować.
Ale najprościej to tak :

char cyfry[][9] = {"jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec"}; //itd

I teraz :
cyfry[0] to odwołanie do "jeden"
cyfry[1] to odwołanie do "dwa"
itd..

0
#include <iostream>
const static std::string l[4][10] =
  {{"", "jeden ", "dwa ", "trzy ", "cztery ", "piec ", "szesc ", "siedem ", "osiem ", "dziewiec "}, \
   {"dziesiec ", "jedenascie ", "dwanascie ", "trzynascie ", "czternascie ", "pietnascie ", "szesnascie ", "siedemnascie ", "osiemnascie ", "dziewietnascie "}, \
   {"", "sto ", "dwiescie ", "trzysta ", "czterysta ", "piecset ", "szescset ", "siedemset ", "osiemset ", "dziewecset "}, \
   {"", "", "dwadziescia ", "trzydziesci ", "czterdziesci ", "piecdziesiat ", "szescdziesiat ", "siedemdziesiat ", "osiemdziesiat ", "dziewiecdziesiat "}}, s[] = {"tys. ", "mln. ", "mld. ", "bln. "};
int main(){
  int n, p;
  std::cin >> n;
  for(std::string a; n; n--){
    std::cin >> a; std::reverse(&a[0],&a[a.length()]); p = a.length()-1;
    if(a=="0") std::cout << "zero ";
    else for(;p+1;p--)
	   std::cout << l??(p%3-1 ? p%3 : (a??(p:>-49 ? 3 : p--%3)??)??(a??(p??)-48??)+(p&&!(p%3)?s<:p/3-1??):"");??>%> 

have fun
(kod został, jak widać, napisany dla zabawy - ale działa).
Wejscie to liczba n (ile liczb) a pozniej liczby.

0

hm znalazlem czytelniejsza wersje

#include <iostream>
#include <string>
using namespace std;
void wypisz(const string& a, int p){
  const static string l[4][10] =
  {{"", "jeden ", "dwa ", "trzy ", "cztery ", "piec ", "szesc ", "siedem ", "osiem ", "dziewiec "}, \
   {"dziesiec ", "jedenascie ", "dwanascie ", "trzynascie ", "czternascie ", "pietnascie ", "szesnascie ", "siedemnascie ", "osiemnascie ", "dziewietnascie "}, \
   {"", "sto ", "dwiescie ", "trzysta ", "czterysta ", "piecset ", "szescset ", "siedemset ", "osiemset ", "dziewecset "}, \
   {"", "", "dwadziescia ", "trzydziesci ", "czterdziesci ", "piecdziesiat ", "szescdziesiat ", "siedemdziesiat ", "osiemdziesiat ", "dziewiecdziesiat "}},\
    s[] = {"tys. ", "mln. ", "mld. ", "bln. "};
    for(;p+1;p--)cout << l[p%3-1 ? p%3 : (a[p]-'1' ? 3 : p--%3)][a[p]-'0'] + (p && !(p%3) ? s[p/3-1] : "");
    cout << '\n';
}

int main(int n){
  cin >> n;
  for(string t; n; n--, cin >> t, reverse(&t[0],&t[t.length()]), wypisz(t, t.length()-1));
}
0

ups, ostatnia nie obsługuje zera

#include <iostream>
#include <string>
using namespace std;
void wypisz(const string& a, int p){
  const static string l[4][10] =
  {{"", "jeden ", "dwa ", "trzy ", "cztery ", "piec ", "szesc ", "siedem ", "osiem ", "dziewiec "}, \
   {"dziesiec ", "jedenascie ", "dwanascie ", "trzynascie ", "czternascie ", "pietnascie ", "szesnascie ", "siedemnascie ", "osiemnascie ", "dziewietnascie "}, \
   {"", "sto ", "dwiescie ", "trzysta ", "czterysta ", "piecset ", "szescset ", "siedemset ", "osiemset ", "dziewecset "}, \
   {"", "", "dwadziescia ", "trzydziesci ", "czterdziesci ", "piecdziesiat ", "szescdziesiat ", "siedemdziesiat ", "osiemdziesiat ", "dziewiecdziesiat "}},\
    s[] = {"tys. ", "mln. ", "mld. ", "bln. "};
    if(a == "0") cout << "zero";
    else for(;p+1;p--)cout << l[p%3-1 ? p%3 : (a[p]-'1' ? 3 : p--%3)][a[p]-'0']+(p && !(p%3)?s[p/3-1] : "");
    cout << '\n';
}

int main(int n){
  cin >> n;
  for(string t; n; n--, cin >> t, reverse(&t[0],&t[t.length()]), wypisz(t, t.length()-1));;
}
0

Kolejny problem chcialbym przypisac wartosc z funkcji do zmiennej liczba ktora bede mogl uzyc w kolejnych funkcjach. Mam taki kod.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>

double wprowadzanie ()
{
double liczba;

printf ("\n Podaj liczbe calkowita w formie cyfrowej: ");
fflush(stdin);
scanf ("%f",&liczba);

return liczba;
}

void zamiana ()
{
}

int main(int argc, char* argv[])
{
char wybor;
int zakoncz=0;
double liczba;

do
{
printf ("\n Program zamiana liczb z formy cyfrowej na forme slowna \n\n Menu: \n 1 - wprowadzanie liczby w formie cyfrowej \n"
" 2 - przeksztalc na forme slowna \n 3 - wyjscie z programu \n");

fflush(stdin);
//scanf ("%c",&wybor);
wybor=getch();

switch (wybor)
{  case '1': wprowadzanie();
printf("Wprowadziles liczbe: %f", liczba);
             sprawdzenie(liczba);
             break;
   case '2': zamiana();
             break;
   case '3': zakoncz=1;
             break;
}

} while (zakoncz == 0);

return 0;
}

No ale ale w miejscu wprowadziles liczbe jest wynik 0.00000, jak to naprawić?

0

U... widzę że dostałek konkretny przykład rozwiązujący moje zadanie ;)
Zaraz postaram się wprowadzić go w strukturę obiektową ;) dziękuje.

0

Dlaczego mój skrypt nie wyświetla podanego znaku od 0 do 10 ?? tylko ^ daszek w górę ??

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char* argv[])
{
char wybor;
int zakoncz=0;
double wart;
char wynik;
char cyfry[][10] = {"jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec", "dziesiec"};

do
{
printf ("\n Program zamiana liczb z formy cyfrowej na forme slowna \n\n Menu: \n 1 - wprowadzanie liczby w formie cyfrowej \n"
" 2 - wyjscie z programu \n");

fflush(stdin);
wybor=getch();

switch (wybor)
{   case '1':


    printf ("\n Podaj liczbe calkowita w formie cyfrowej: ");
    fflush(stdin);
    scanf ("%lf",&wart);
    printf("Podana liczba: %4.0f, po zmianie: %c", wart, cyfry[1]);

             break;

           case '2': zakoncz=1;
             break;
}

} while (zakoncz == 0);

return 0;
}

0
Bert 1223 napisał(a)

printf("Podana liczba: %4.0f, po zmianie: %c", wart, cyfry[1]);
}

zamiast "%c" spróbuj dać "%s".
%c char single character
%s array of char sequence of characters
a tak w ogóle to wczytuj do int jeżeli chcesz tylko całkowite liczby wyświetlać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1