algorytm.org

Implementacja w Delphi/Pascal



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Zamiana liczby na słowa - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 3
SłabyŚwietny
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.
Dodaj komentarz