Autorské riešenie
Pri doprogramovaní procedúry kresliCislo bolo potrebné vykonať nasledujúce kroky:
Pri testovaní počtu cifier bolo možné použiť príkazy pocet :cislo (v jazyku Imagine) alebo len(str(cislo) (v jazyku Python). Rozbitie čísla na jeho cifry bolo vhodné vykonať pomocou cyklu, v ktorom postupne osekávame číslo vykreslením poslednej cifry. Ak je cifra väčia ako štyri, počet posunutých kamienkov zhora je jeden a počet posunutých kamienkov zdola je rovný cifre zmenšenej o číslo 5. Ak je cifra menšia alebo rovná ako štyri, tak zhora kamienok nepresúvame a počet kamienkov posunutých zdola je rovný samotnej cifre. Vykreslenie žliabika už bolo naprogramované, bolo postačujúce vhodne nastaviť medzery medzi týmito žliabikmi. Nasledujú možné riešenia v jazyku Imagine Logo a Python.
;Imagine logo
viem kresliCislo :cislo znova skry ak2 pocet :cislo > 5 [ pis "|Cislo sa neda zobrazit.| ] [ opakuj 5 [ urobTu "cifra zvysok :cislo 10 urobTu "cislo cpodiel :cislo 10 ak2 :cifra > 4 [ kresliCifru (:cifra - 5) 1 ] [ kresliCifru :cifra 0 ] vl 90 do 50 vp 90 ] ] koniec
#python
import turtle # vykresli cele cislo def kresliCislo(cislo): ''' :param cislo - cele cislo :type int ''' kor.hideturtle() if len(str(cislo))>5: print("Cislo sa neda zobrazit") else: for i in range(5): cifra = cislo % 10 cislo //=10 if cifra > 4: kresliCifru(cifra-5, 1) else: kresliCifru(cifra,0) kor.left(90) kor.forward(50) kor.right(90) Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 6 tímov, všetky v jazyku Imagine. Dva tímy vyriešili úlohu správne. V niektorých riešeniach chýbalo testovanie, či číslo je najviac päťciferné. Niektoré tímy nesprávne previedli kódovanie cifier na počty posunutých kamienkov zhora a zdola. Viacerým tímom chýbalo rozbitie čísla na cifry, prípadne na toto rozbitie nepoužívali cyklus. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |