Moje riešenie :smile18: tvári sa to funkčne. Ak nájdete chybu tak dajte vediet :smile1:
program number_to_text;
uses crt;
var cislo:longint;
problem_s_desiatkami:boolean;
problem_s_milionmi:boolean;
procedure nacitaj;
begin
writeln('Prevod cisla na text');
writeln('-*! Radoslav R bara !*-');
write('Zadaj cislo: ');
readln(cislo);
problem_s_desiatkami:=false;
problem_s_milionmi:=false;
end;
function cislo_na_text(cifra,por_cifry:integer):string;
var x:string;
false_problem_s_desiatkami:boolean;
begin
x:='';
false_problem_s_desiatkami:=false;
if (por_cifry<=9) and (por_cifry>0) then begin
if cifra=1 then
x:='jeden'
else if cifra=2 then
x:='dva'
else if cifra=3 then
x:='tri'
else if cifra=4 then
x:='styri'
else if cifra=5 then
x:='pet'
else if cifra=6 then
x:='sest'
else if cifra=7 then
x:='sedem'
else if cifra =8 then
x:='osem'
else if cifra=9 then
x:='devet';
if problem_s_desiatkami=true then begin
x:=x+'nast';
if cifra=0 then
x:='desat'
else if cifra=4 then
x:='strnast';
false_problem_s_desiatkami:=true;
end;
if (por_cifry=2) or (por_cifry=5) or (por_cifry=8) then begin
x:=x+'desiat';
if (cifra=1) or (cifra=0) then begin
x:='';
if cifra=1 then
problem_s_desiatkami:=true;
end
else if cifra=2 then
x:='dvadsat'
else if cifra=3 then
x:='tridsat'
else if cifra=4 then
x:='styridsat';
end
else if (por_cifry=3) or (por_cifry=6) or(por_cifry=9) then begin
if cifra=2 then
x:='dve'
else if cifra=1 then
x:='';
if cifra<>0 then
x:=x+'sto ';
end
else if por_cifry=4 then begin
if problem_s_desiatkami = false then begin
if cifra=1 then
x:=''
else if cifra=2 then
x:='dve';
end;
x:=x+'tisic ';
end
else if por_cifry=7 then begin
if (cifra>=5) or (problem_s_milionmi=true) then
x:=x+'milionov'
else if cifra=1 then
x:=x+'milion'
else if (cifra>=2) and (cifra<5) then
x:=x+'miliony';
x:=x+' ';
problem_s_milionmi:=false;
end;
if false_problem_s_desiatkami=true then
problem_s_desiatkami:=false;
end;
cislo_na_text:=x;
end;
procedure preved_cislo;
var retazec,vysledne_cislo:string;
i,cifra,por_cifry,pom:integer;
begin
str(cislo,retazec);
por_cifry:=length(retazec);
vysledne_cislo:='';
if por_cifry>9 then
writeln('Cislo nesmie byt vecsie ako 999 999 999!')
else begin
for i:=1 to length(retazec) do begin
val(retazec[i],cifra,pom);
vysledne_cislo:=vysledne_cislo+cislo_na_text(cifra,por_cifry);
dec(por_cifry);
end;
if cislo = 0 then vysledne_cislo:='nula';
writeln(vysledne_cislo);
end;
end;
begin
clrscr;
nacitaj;
preved_cislo;
readln;
end.