Witam ! Wiem że już był post o nazwie zapis słowny liczb, i mam taki kod, ale to tego potrzebuje zapisu z przecinkami np. 102,56 sto dwa i piędziesiąt sześć setnych.
Mój kod wygląda tak:
program liczby;
{$APPTYPE CONSOLE}
uses
SysUtils;
function LiczbaSlownie(Liczba: int64): string;
function Slow(t: string): string;
const
J: array ['1'..'9'] of string[20] =
(' jeden', ' dwa', ' trzy', ' cztery', ' piec', ' szesc',
' siedem', ' osiem', ' dziewiec');
N: array [10..19] of string[20] =
(' dziesiec', ' jedenascie', ' dwanascie', ' trzynascie', ' czternascie',
' pietnascie', ' szesnascie', ' siedemnascie', ' osiemnascie', ' dziewietnascie');
D: array ['0'..'9'] of string[20] =
('', '', ' dwadziescia', ' trzydziesci', ' czterdziesci',
' piecdziesiat', ' szescdziesiat', ' siedemdziesiat',
' osiemdziesiat', ' dziewiecdziesiat');
S: array ['0'..'9'] of string[20] =
('', ' sto', ' dwiescie', ' trzysta', ' czterysta',
' piecset', ' szescset', ' siedemset', ' osiemset', ' dziewiecset');
begin
Result := '';
case t[2] of
'1': Result := S[t[1]]+N[StrToInt(t[2]+t[3])];
'0', '2'..'9': Result := S[t[1]]+D[t[2]]+J[t[3]];
end;
end;
const
G: array [0..7, 1..3] of string[20] =
(('', '', ''),
(' tysiac', ' tysiace', ' tysiecy'),
(' milion', ' miliony', ' milionow'),
(' miliard', ' miliardy', ' miliardow'),
(' bilion', ' biliony', ' bilionow'),
(' biliard', ' biliardy', ' biliardow'),
(' trylion', ' tryliony', ' trylionow'),
(' tryliard', ' tryliardy', ' tryliardow'));
var
sl, t1, t: string;
i, k, dl: Byte;
begin
t := IntToStr(Liczba);
dl := Length(t);
for i := 0 to (dl-1) div 3 do
begin
t1 := Copy(t, Length(t)-2, 3);
Delete(t, Length(t)-2, 3);
for k := 1 to 3-Length(t1) do
t1 := '0'+t1;
if t1='000' then
Continue;
if (t1='001') then
sl := Slow(t1) + G[i,1] + sl
else
if (t1[3] in ['2'..'4']) and (t1[2]<>'1') then
sl := Slow(t1) + G[i,2] + sl
else
sl := Slow(t1) + G[i,3] + sl;
end;
Result := Trim(sl);
writeln(result);
end;
var number : integer;
begin
Writeln(Witaj uzytkowniku :));
Readln;
number :=1;
while(number <> 0) do
begin
Writeln('Wprowadz liczbe, ktora ma zostac zapisana slownie (0 aby zakonczyc): ');
readln(number);
LiczbaSlownie(number);
end;
writeln;
end.
Wszystko działa, ale nie wiem jak dolepić do tego przecinki.
Prosze o pomoc :/