Free Pascal. Vki küldene egy forráskódot egy olyan programra, ami 1től 100ig betüvel írja ki a beolvasott számot (nem arra a verzióra gondolok, amikor case-el 1től 100ig megadom minden egyes számnak a nevét:D :D)?
Mivel nyugdíjas vagyok és aranyszívem van tessék a teszt program:
program Teszt;
var i, n : integer;
s: string;
function Szoveg( const szam: integer): string;
const
Ones: array[0..9] of string[10] = ('', 'egy', 'kettő', 'három', 'négy', 'öt', 'hat', 'hét', 'nyolc', 'kilenc');
Tens: array[0..10] of string[10] = ('', 'tíz', 'húsz', 'harminc', 'negyven', 'ötven', 'hatvan', 'hetven', 'nyolcvan', 'kilencven', 'száz');
var
egyes, tizes: integer;
begin
egyes:= szam mod 10;
tizes:= szam-egyes;
Szoveg:=Tens[tizes div 10]+Ones[egyes];
if tizes=10 then Szoveg:='tizen'+Ones[egyes];
if tizes=20 then Szoveg:='huszon'+Ones[egyes];
if egyes = 0 then Szoveg:=Tens[tizes div 10];
end;
begin
n:= 1;
while n <> 0 do
begin
Write('Kérem a számot: ');
ReadLn(s);
Val(s, i, n);
end;
Writeln(i, ' Szövegesen: ',Szoveg(i));
ReadLn;
end.
Magyarázat :)
program Teszt;
var i, n : integer;
s: string;
function Szoveg( const szam: integer): string;
const
//egy tömbbe berakjuk az egyeseket
Ones: array[0..9] of string[10] = ('', 'egy', 'kettő', 'három', 'négy', 'öt', 'hat', 'hét', 'nyolc', 'kilenc');
//egy tömbbe berakjuk a tízeseket
Tens: array[0..10] of string[10] = ('', 'tíz', 'húsz', 'harminc', 'negyven', 'ötven', 'hatvan', 'hetven', 'nyolcvan', 'kilencven', 'száz');
var
egyes, tizes: integer;
begin
//szétbontjuk egyesek és tizesekre
egyes:= szam mod 10;
tizes:= szam-egyes;
//alaphelyzetben az függvény értéke a Tens tömb (tizes div 10 -edik) eleme + az Ones tömb egyes eleme (pl. 87 Tens[8]+Ones[7]
Szoveg:=Tens[tizes div 10]+Ones[egyes];
//magyar szabályok szerint
if tizes=10 then Szoveg:='tizen'+Ones[egyes];
if tizes=20 then Szoveg:='huszon'+Ones[egyes];
//igazából akkor szükséges, ha a nullát is ki akarjuk íratni, akkor első elemnek fel kell venni az Ones tömbbe
if egyes = 0 then Szoveg:=Tens[tizes div 10];
end;
begin
n:= 1;
//amíg n <> 0-val addig ismételjük
while n <> 0 do
begin
Write('Kérem a számot: ');
ReadLn(s);
//stringet számmá alakítjuk, ha sikerült n=0
Val(s, i, n);
end;
Writeln(i, ' Szövegesen: ',Szoveg(i));
ReadLn;
end.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!