[ _BloB_ @ 24.05.2005. 08:59 ] @
Da li se neko bavio vec ovom problematikom ?

recimo za uneti broj: 32512
rutina treba da vrati string:
TridesetDveHiljadePetStotinaDvanaest

ja sam nesto pokusao i to sasvim fino radi ali neki detalji me nerviraju
recimo umesto tridesetdvehiljade
program ispise tridesetdvehiljada...

u pitanju je rekurzivna funkcija pa ima neka ogranicenja koja nisam
uspeo prevazici...

ako nekog zanima sors rado cu ga postovati, mada i nije neka nauka...

cisto me interesuju vasa iskustva sa tim problemom koji se cesto javlja u svakodnevnim aplikacijama posebno za formulare i dokumente...

.. ???

[ bancika @ 24.05.2005. 11:40 ] @
procackaj malo po forumu, bilo je reci o tome
[ Bojan Kopanja @ 24.05.2005. 15:59 ] @
Ja sam postavio isto pitanje nedavno i dobio sam ne samo odgovor, vec i ceo kod, koji smo svi po malo doterali i sada imamo fantasticno ne pogresivu funkciju za to sto ti treba... Potrazi to u searchu, bilo je pre mozda mesec dana, posto mene mrzi da trazim ( ako tebe sanog mrzi, zasto bi meni bilo drugacije za tvoje potrebe )...
[ peromalosutra @ 24.05.2005. 21:12 ] @
Evo, nasao sam neki svoj stari program, radi samo sa dvocifrenim brojevima, ali lako ces ga dograditi i za cetverocifrene.
I izbjegni onu goto naredbu, ja sam je koristio jer u vrijeme kad sam pisao program nisam ni znao za procedure :)


Code:

Program Trocifreni_brojevi;
Uses WinCrt;
Label 1,2,3;
Var a,d,j:integer;
Begin

1:
Writeln;
Writeln ('Unesi neki dvocifren broj.');
Readln (a);
Write ('Uneseni broj je ');
d:= a div 10;
j:= a mod 10;

If d=1 then goto 2 else goto 3;

2:
If a=11 then write ('Jedanaest.');
If a=12 then write ('Dvanaest.');
If a=13 then write ('Trinaest.');
If a=14 then write ('Cetrnaest.');
If a=15 then write ('Petnaest.');
If a=16 then write ('Sesnaest.');
If a=17 then write ('Sedamnaest.');
If a=18 then write ('Osamnaest.');
If a=19 then write ('Devetnaest.');
Goto 1; 


3:
If d=2 then write ('Dvadeset');
If d=3 then write ('Trideset');
If d=4 then write ('Cetrdeset');
If d=5 then write ('Pedeset');
If d=6 then write ('Sesdeset');
If d=7 then write ('Sedamdeset');
If d=8 then write ('Osadeset');
If d=9 then write ('Devedeset'); 

If j=1 then write ('jedan.');
If j=2 then write ('dva.');
If j=3 then write ('tri.');
If j=4 then write ('cetiri.');
If j=5 then write ('pet');
If j=6 then write ('sest.');
If j=7 then write ('sedam');
If j=8 then write ('osam.');
If j=9 then write ('devet.');
Goto 1;

End.
[ IgLo @ 24.05.2005. 23:04 ] @
Citat:
Strog: Ja sam postavio isto pitanje nedavno i dobio sam ne samo odgovor, vec i ceo kod, koji smo svi po malo doterali


Evo, posto sam ja postavio taj prvobitni kod, da i odgovorim coveku:

http://www.elitesecurity.org/poruka/644085

Ovo je link, ali procitaj sve, nemoj iskoristiti kod na koji prvo naletis, posto ima dosta ispravki do kraja teme.
[ _BloB_ @ 25.05.2005. 06:44 ] @
Dobro, priznajem da nisam prvo pretrazio forum...

Kod do kojeg ste vi dosli je elegantan nema sta... moje cestitke...
moje resenje nije ni upola elegantano... mada nije bas ni brute force...

ali ja sam cepidlaka i nervira me ono
tristasedamdesetdvehiljada...
treba da pise tristasedamdesetdvehiljadE.

ni ja to nisam uspeo lepo da resim... u pitanju je zamrsenost naseg jezika...
cini mi se da bih FloatToCurency za engleski jezik napravio za 5 minuta...

hvala Vuku na tome..

nego, interesuje me ima li neko resenje za taj problem... znaci
da hiljade menja kako je ispravno, da nekada stavi HILJADA a nekad HILJADE ???

poz
[ IgLo @ 25.05.2005. 17:53 ] @
Upravu si, ovde postoji jos jedan bug. Probaj da uradis ovo, pa javi rezultate tastiranja:

Code:

     If StrToInt (Trojka [2] + Trojka[3]) <= 5 Then
                Temp := Temp + Prilozi [x, -1] + Prilozi [x, StrToInt (Trojka[2] + Trojka[3])]
              Else
                Temp := Temp + Prilozi [x, -1] + Prilozi [x, 5];


zameni sa

Code:

              If (StrToInt (Trojka [2] + Trojka[3]) <= 5) Or  (StrToInt (Trojka [2] + Trojka[3]) > 20) Then
                Begin
                  If StrToInt (Trojka[3]) <= 5 Then
                    Temp := Temp + Prilozi [x, -1] + Prilozi [x, StrToInt (Trojka[3])]
                  Else
                    Temp := Temp + Prilozi [x, -1] + Prilozi [x, 5];
                End
              Else
                Temp := Temp + Prilozi [x, -1] + Prilozi [x, 5];


Nadam se da je ovo zadnji bug :)
[ _BloB_ @ 27.05.2005. 07:11 ] @

Ljudi svaka cas na pomoci, a posebno tebi Iglo !!!

rutina radi perfektno...

Ofaj forum je zakon !

poz