Nie mam kompilatora, ale kiedy***347; te***380; pisa***322;em taki program, ja rozwi***261;za***322;em to tak (nie wiem czy z tym pobraniem znaku b***281;dzie ok)
Kod:
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
string jednosci[10] = {"", " jeden", " dwa", " trzy", " cztery", " piec", " szesc", " siedem", " osiem", " dziewiec"};
string nastki[10] = {" dziesiec", " jedenascie", " dwanascie", " trzynascie", " czternascie", " pietnascie", " szesnascie", " siedemnascie", " osiemnascie", " dziewietnascie"};
string dziesiatki[10] ={"", "", " dwadziescia", " trzydziesci", " czterdziesci", " piecdziesiat", " szescdziesiat", " siedemdziesiat", " osiemdziesiat", " dziewiecdziesiat"};
string setki[10] = {"", " sto", " dwiescie", " trzysta", " czterysta", " piecset", " szescset", " siedemset", " osiemset", " dziewiecset"};
string wielkosci[6] = {"", " tys.", " mln.", " mld.", " bln.", " bld."};
int main(int argc, char *argv[])
{
long int liczba;
int reszta, rzad, i;
string slowa;
cout << "Podaj liczbe ktora chcesz zamienic na slowa " << endl;
cin >> liczba;
i = 1;
rzad = 0;
if (liczba <0)
{
slowa = slowa + " minus";
liczba = abs(liczba);
}
if (liczba ==0)
slowa = slowa + " zero";
while (liczba > 0)
{
reszta = liczba % 10;
liczba = liczba / 10;
if ( i == 1 )
slowa = wielkosci[rzad] + slowa;
if ( i==3 )
{
slowa = setki[reszta] + slowa;
i = 0;
rzad++;
}
if ( i==2 )
slowa = dziesiatki[reszta] + slowa;
if ( i == 1 && liczba % 10 != 1)
slowa = jednosci[reszta] + slowa;
if ( i == 1 && liczba % 10 == 1)
{
slowa = nastki[reszta] + slowa;
liczba = liczba / 10;
i++;
}
i++;
}
char znak;
do {
cout << slowa;
cout << endl << endl;
system("PAUSE");
return EXIT_SUCCESS;}
while ((znak=getch() ) !='0');
return 0;
}