Autorské riešenie [stiahni]
Uvedieme jedno z mnohých riešení tejto úlohy. Na zistenie potrebnej dĺžky koberca, musíme zistiť šírku každého schodu
a dĺžku medzi každými dvoma schodmi (výška schodu).
Zo zadania vyplýva, že sa výška nemení a teda celkový súčet výšok všetkých schodov môžeme napísať ako :vyskaSchodu * :pocetSchodov. Takto teda získame
prvý potrebný údaj.
Potrebujeme však ešte zistiť súčet šírok všetkých schodov. Šírku prvého
schodu získame zo vstupného parametra sirkaPrvehoSchodu. Zo zadania ďalej
vyplýva, že každý ďalší schod je širší od predchádzajúceho práve o šírku prvého
schodu. Vytvoríme si novú premennú (v našom prípade "sirkaSucet") a k nej budeme
opakovane pripočítavať šírku schodu. Šírka schodu sa nám mení podľa toho, na
ktorom schode sa nachádzame. Použijeme preto počítadlo schodov, aby sme vedeli,
na ktorom schode sa nachádzame. Šírku prvého schodu teda vynásobíme údajom,
ktorý nám vráti počítadlo a tak získame šírku daného schodu. Tieto šírky sčítame
a získame druhý potrebný údaj.
Oba údaje sčítame a získame potrebnú dĺžku koberca na pokrytie všetkých
schodov. Údaj necháme vypísať.
viem pocitajDlzkuKoberca :pocetSchodov :sirkaPrvehoSchodu :vyskaSchodu
urobTu "vyskaSucet :vyskaSchodu * :pocetSchodov
urobTu "sirkaSucet 0
opakuj :pocetSchodov
[
urobTu "sirkaSchodu :sirkaPrvehoSchodu * pocitadlo
urobTu "sirkaSucet :sirkaSucet + :sirkaSchodu
]
pis :vyskaSucet + :sirkaSucet
koniec
Vaše zaujímavé riešenia a najčastejšie chyby
Úlohu riešilo 16 tímov a polovica na plný počet. Jedno odovzdané riešenie malo aj grafickú
úpravu. Zopár riešení bolo zaujímavých a jednoduchých. Najčastejšie chyby vznikali pri výpočte
celkovej šírky. Mnohí zdvojnásobili šírku nasledujúceho schodu, pričom každý schod je od
predchádzajúceho širší práve o sirkaPrvehoSchodu (vyplýva zo zadania). Chyby nastávali aj pri
cykloch (boli ukončené skôr a preto neplnili svoju úlohu).V dvoch prípadoch ste zabudli vypísať výsledok.
|