Ocena użytkownikóww: ***** / 3
Nadesłany przez Tomasz Lubiński, 27 lipca 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Liczba na slowa - Delphi/Liczba_na_slowa.dpr:
//zamiana liczby na slowa
//Tomasz Lubinski (c)2003
//www.algorytm.org
program Liczba_na_slowa;
{$Apptype Console}
var
liczba: Int64;
slownie: String;
koncowka: Integer;
rzad: Integer = 0;
j: Integer = 1;
minus: Boolean = false;
const jednosci: array[0..9] of String = ('', ' jeden', ' dwa', ' trzy', ' cztery', ' piec', ' szesc', ' siedem', ' osiem', ' dziewiec');
const nascie: array[0..9] of String = (' dziesiec', ' jedenascie', ' dwanascie', ' trzynascie', ' czternascie', ' pietnascie', ' szesnascie', ' siedemnascie', ' osiemnascie', ' dziewietnascie');
const dziesiatki: array[0..9] of String = ('', ' dziesiec', ' dwadziescia', ' trzydziesci', ' czterdziesci', ' piecdziesiat', ' szescdziesiat', ' siedemdziesiat', ' osiemdziesiat', ' dziewiecdziesiat');
const setki: array[0..9] of String = ('', ' sto', ' dwiescie', ' trzysta', ' czterysta', ' piecset', ' szescset', ' siedemset', ' osiemset', ' dziewiecset');
const x: array[0..5] of String = ('', ' tys.', ' mln.', ' mld.', ' bln.', ' bld.');
begin
writeln('Podaj liczbe do zamiany na slowa');
readln(liczba);
if (liczba<0) then
begin
minus:=true;
liczba:=-liczba;
end;
if (liczba=0) then slownie:='zero';
while liczba>0 do
begin
koncowka:=liczba mod 10;
liczba:=liczba div 10;
if (j=1)and((liczba mod 100 <> 0) or (koncowka<>0)) then slownie:=x[rzad]+slownie;
if (j=1)and(liczba mod 10 <> 1) then slownie:=jednosci[koncowka]+slownie;
if (j=1)and(liczba mod 10 = 1) then
begin
slownie:=nascie[koncowka]+slownie;
liczba:=liczba div 10;
j:=j+2;
continue;
end;
if (j=2) then slownie:=dziesiatki[koncowka]+slownie;
if (j=3) then
begin
slownie:=setki[koncowka]+slownie;
j:=0;
rzad:=rzad+1;
end;
j:=j+1;
end;
if minus then slownie:='minus '+slownie;
writeln;
writeln('Odpowiedz:');
writeln(slownie);
readln;
end.