Evo, danas sam dobre volje, pa cu ti pomoci.
Ali, nemoj samo da promenis
hiljade u
tisuce i
cife u
znamenke, vec malo prouci program, princip rada i sl.
Na kraju krajeva, cilj seminarskog rada je da nesto naucis.
Napisao sam ovo na brzaka, i koliko sam probao radi, osim sto ima jedan bug, koji me mrzi da prepravim.
Naime, program koristi
\b karaktere, odnosno
backspace da ispravi npr.
hiljada u
hiljade, znaci postupak je sledeci:
ispisuje se
hiljada, \b, e, respektivno. Ako se desi da npr. po ispisu
hiljada program predje u novi red,
backspace karakter koji sledi nece vratiti kurzor u prosli red, vec ce ostati u mestu, pa ce doci do greske u ispisu.
Ovo mozes korigovati na vise nacina...
Code:
#include <iostream.h>
enum Cifre {MILIJARDE, MILIONI, HILJADE, JEDINICE};
char* cCifre[10] = "" ,"jedan", "dva", "tri", "cetiri", "pet", "sest",
"sedam", "osam", "devet"};
char* cStotine[10] = {"", "\b\b \b\b\b\b\b", "\be", "", "\b\b\bri", "",
"\b\b", "", "", ""};
char* cDesetice[10] = {"", "\b\b\b\b\b", "", "", "\b\b\br", "\b",
"\b", "", "", "\b"};
char* cNaest[10] = {"", "\b", "", "", "\b\b\br", "", "", "", "", ""};
char* cMilijarda = "iaeeeiiiii";
char* cMilion = "a aaaaaaaa";
char* cHiljada = "aaeeeaaaaa";
void NapisiGrupu(int nG, Cifre eCifre)
{
int nTemp, nTemp2;
if(nG)
{
nTemp = nG / 100;
nTemp2 = nG;
if(nTemp)
cout << cCifre[nTemp] << cStotine[nTemp] << "sto";
nTemp = (nG / 10) % 10;
nTemp2 %= 100;
if((nTemp > 1 ) || (nTemp2 == 10))
cout << cCifre[nTemp] << cDesetice[nTemp] << "deset";
nTemp2 %= 10;
if((nTemp == 1) && (nTemp2))
{
cout << cCifre[nTemp2] << cNaest[nTemp2] << "naest";
nTemp2 = 5;
}
else
if(nG % 100)
cout << cCifre[nTemp2];
if((eCifre == MILIJARDE) || (eCifre == HILJADE))
switch(nTemp2)
{
case 1:
cout << "\b\bna";
break;
case 2:
cout << "\be";
}
switch(eCifre)
{
case MILIJARDE:
cout << " milijard" << cMilijarda[nTemp2];
break;
case MILIONI:
cout << " milion" << cMilion[nTemp2];
break;
case HILJADE:
cout << " hiljad" << cHiljada[nTemp2];
}
}
cout << " ";
}
void NapisiBroj(unsigned long ulBr)
{
if (ulBr)
{
NapisiGrupu(ulBr / 1000000000 , MILIJARDE);
NapisiGrupu((ulBr / 1000000) % 1000 , MILIONI);
NapisiGrupu((ulBr / 1000) % 1000 , HILJADE);
NapisiGrupu(ulBr % 1000 , JEDINICE);
}
else
cout << "nula";
}
int main(int argc, char* argv[])
{
unsigned long ulX;
cout << "\nUnesi broj (0<x<4294967296) :";
cin >> ulX;
cout << "\n";
NapisiBroj(ulX);
cout << "\n";
return 0;
}
O_o