program hodnotaCifry;
{ Program načte jeden znak a jestliže se jedná o cifru,
vypíše její hodnotu, jinak vypíše -1.
Tzn. např. pro znak '3' vypíše číslo 3. }
var znak : char;
{ Funkce dostane znak a vrátí TRUE <==> znak je cifra
(tzn. nějaký z '0', '1', ... '9'), jinak vrátí FALSE.}
function jeCifra( c : char ):boolean;
begin
jeCifra := (c >= '0') and (c <= '9');
end;
{ Funkce dostane znak a jestliže se jedná o cifru,
vrátí její hodnotu, jinak vrátí -1. }
function hodnotaCifry( c : char ):integer;
begin
if (jeCifra(c)) then
{ Hodnota cifry je přesně její vzdálenost od kódu znaku '0'.
To platí díky tomu, že znaky '0', '1', ... '9' jdou přesně
těsně za sebou. To samé platí např. pro 'a', ..., 'z'. }
hodnotaCifry := ord(c) - ord('0')
else
hodnotaCifry := -1;
end;
begin
read(znak);
writeln(hodnotaCifry(znak));
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ů). ;)