• 7 odgovora
  • 6.254 pregleda
Pretvaranje broja u tekst ??? 24.05.2005. u 08:59 · pre 260 meseci #1
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...

.. ???

Potpis
http://www.aspdotnetfaq.com
http://fluentdatetime.codeplex.com/
Re: Pretvaranje broja u tekst ??? 24.05.2005. u 15:59 · pre 260 meseci #3
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 :D )...
Potpis
ex Strog

http://www.zeussoftware.rs
Re: Pretvaranje broja u tekst ??? 24.05.2005. u 21:12 · pre 260 meseci #4
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.
Re: Pretvaranje broja u tekst ??? 24.05.2005. u 23:04 · pre 260 meseci #5
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. :)
Re: Pretvaranje broja u tekst ??? 25.05.2005. u 06:44 · pre 260 meseci #6
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
Potpis
http://www.aspdotnetfaq.com
http://fluentdatetime.codeplex.com/
Re: Pretvaranje broja u tekst ??? 25.05.2005. u 17:53 · pre 260 meseci #7
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 :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme