Autorské riešenie
[stiahni]

Najprv vypočítame pomocou celočíselného delenia, koľko drahších lístkov nám automat vydá z prvej vhodenej mince a pomocou príkazu zvyšok zistíme, koľko peňazí v automate ešte ostalo. Z peňazí v automate vyrátame, koľko lacnejších lístkov nám dá automat. Nesmieme zabudnúť zapamätať si zvyšné mince v automate. Prirátame ich k druhej vhodenej minci. Rovnakým spôsobom pokračujeme ďalej. Nakoniec vypíšeme počet obyčajných lístkov, počet zľavnených lístkov a vrátenú sumu.

Výsledná procedúra môže vyzerať napríklad takto:

viem listok :minca1 :minca2

urobtu "suma :minca1

urobTu "drahsiListok cpodiel :suma 30
urobTu "suma zvysok :suma 30
urobTu "lacnejsiListok cpodiel :suma 10
urobTu "suma zvysok :suma 10

urobTu "suma :minca2 + :suma

urobTu "drahsiListok :drahsiListok + cpodiel :suma 30
urobTu "suma zvysok :suma 30
urobTu "lacnejsiListok :lacnejsiListok + cpodiel :suma 10
urobTu "suma zvysok :suma 10

pis :drahsiListok
pis :lacnejsiListok
pis :suma
koniec

Najčastejšie chyby, komentár k vašim riešeniam

Mnohí ste riešili úlohu viacnásobným použitím príkazu opakovania kým. Ďalší ste pri riešení použili príkazy cpodiel a zvyšok. Obe riešenia boli korektné. Niektorí z vás si zjednodušili úlohu tým, že sčítali hodnoty oboch vhodených mincí. Takéto riešenie však nie je správne.
Zaujímavé riešenie (v ktorom použil dve procedúry) nám poslal tím Bali Michal.