{ ============== } { 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 } program o_sucte_cisel; var p : integer; procedure nacitaj;forward; procedure minus1;forward; 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; begin nacitaj; writeln(p); readln; end.