program nacitaniCisla;
{ Program očekává na vstupu číslo zapsané v desítkové soustavě. Program toto číslo načte po znacích
a převede si ho ve vnitřní reprezentaci na číselnou hodnotu. Pak tuto hodnotu vypíše. (Je to jen
ukázkový program, jak se dá podobná věc udělat. Samozřejmě kdybychom chtěli číslo jen vypsat, stačí
ho načíst jako integer - nebo klidně jako string. Nicméně pokud bychom s ním chtěli dále dělat něco
dalšího, např. něco numerického, již musí být uloženo v číselné proměnné. A proč ho načítat po znacích?
Např. abychom ověřili, že na vstupu není moc velké číslo, které by se nám nevešlo do integeru. (Uvnitř
hornerova schematu bychom přidali test na velikost či počet cifer.) }
var cislo : integer;
znak : char;
{ Tato funkce vrací TRUE <=> argument char je cifra, tedy znak mezi '0' a '9'.}
function jeCifra( c : char ):boolean;
begin
jeCifra := (c >= '0') and (c <= '9');
end;
begin
cislo:=0;
read(znak);
{ Hornerovo schema: načítáme znaky dokud to jsou cifry a výslednou hodnotu si ukládáme do proměnné číslo.}
while ( jeCifra(znak) ) do
begin
cislo:=cislo*10 + ord(znak) - ord('0');
read(znak);
end;
writeln(cislo);
end.
Kdo byste našel v nějakém z těchto programů chybu, dejte mi to vědět - můžete tak získat bonusové body (1 chyba ≈ 5 bodů). ;)