Localize file www.TrSek.com/cover/mojzis/o_sucte_cisel.pas{ ============== }
{ KSP 15. rocnik 1112: O sucte cisel Copyright (c) Jan Mojzis }
{ ============== }
{ Zadanie: }
{ Na vstupe mame postupnost nenulovych celych cisel ukoncenych nulou. Napiste }
{ program, kt. nacita tuto postupnost a vypise jej sucet. }
{ OBMEDZENIE: }
{ V celom programe mozete pouzit iba procedury bez parametrov a jedinu}
{ jednoduchu globalnu premennu. }
{ Napiste program, kt. nacita kladne cislo n a vypise nasledujuci riadok: }
{ ,,dvojkovy zapis n"(2) = ,,desiatkovy zapis n" (10) }
{ PRIKLAD: Pre n = 10 vypise: 1010(2) = 10(10). }
{ OBMEDZENIE: V celom programe mozete pouzit iba procedury bez parametrov a }
{ jedinu jednoduchu globalnu premennu. }
{ ----------------------------------------------------------------------------}
{ Rekurzia na minus. Pri vacsom pocte kladnych cisel a poslednom }
{ zapornom treba dvakrat zadat na konci 0. }
{ }
{ POZNAMKA: }
{ CRT_EFD nie je sucastou tohto riesenia. Kniznicu CRT_EFD pre pracu s }
{ konzolovymi vypismi mozete stiahnut napriklad na: }
{ http://www.stano.wz.sk/index.php?id=8 }
{ }
{ Author: (c) 2007 Jan Mojzis }
{ Date : 06.07.2008 http://www.trsek.com }
procedure minus1;
begin
if p > 0 then begin { Tu je prva najd cast pre cele }
dec (p); { kladne cisla }
if p <> 0 then minus1; { cize procedura minus1 je schopna }
if p = 0 then nacitaj; { seba sama volat tolko krat, kolko }
inc (p); { suctov treba spravit }
end { na konci sa musi vyrovnat }
else
if p < 0 then begin { toto je to iste len inverzne }
inc (p); { miesto dec je inc }
if p <> 0 then minus1; { podmienka testovania je ta ista }
if p = 0 then nacitaj; { zaporne sa tiez musia scitat }
dec (p); { vyrovnanie }
end
end;
procedure nacitaj;
begin
writeln('Zadaj cislo');
readln (p);
if p <> 0 then
minus1
else
p:=0;
end;