Autorské riešenie
[stiahni]

  • Počet riešiteľov: 4 / 20 = 20,0 %

  • Úspešnosť riešenia: 3,75 / 5 =  75,00 %

Podstatou úlohy bolo náhodne vygenerovať číslo žiaka pre každý deň vyučovania v druhom polroku. Z informácií v zadaní je možné vyčítať, že druhý polrok má 93 dní. Ak vieme počet žiakov v triede (napr. urobTu "ziakov 29), tak žrebovanie bude prebiehať takto:

   urobtu "pocetdni 21*5-1-5-4-2
   opakuj :pocetdni [
     urobTu "cislo 1 + nahodne :ziakov
     pis :cislo
   ]

Potrebujeme ešte skontrolovať, či vyžrebované číslo zodpovedá môjmu číslu v triednej knihe. Ak áno, tak počet dní, v ktorých som bol vyžrebovaný zvýšim o jednotku

   ak :cislo = :mojeCislo [
     urobTu "pocetvyzrebovani :pocetvyzrebovani + 1
   ]

Výsledná procedúra programu môže byť napríklad v takomto tvare:

   viem zreb :mojeCislo :ziakov
     urobtu "pocetvyzrebovani 0
     urobtu "pocetdni 21*5-1-5-4-2
     pis (slovo "|Počet vyučovacích dní: | :pocetdni)
     opakuj :pocetdni [
       urobTu "cislo 1 + nahodne :ziakov
       pis (slovo "|Predseda triedy v | poc "|. dni: | :cislo)
       ak :cislo = :mojeCislo [
         urobTu "pocetvyzrebovani :pocetvyzrebovani + 1
        ]
      ]
     pis (slovo "|Bol som vyžrebovaný | :pocetvyzrebovani "| krát.|)
   koniec

Riešenie úlohy bolo ešte potrebné doplniť komentárom o spravodlivosti tohto žrebovania. Keďže každý žiak by mal rovnakú šancu byť vyžrebovaný rovnaký počet dní len v prípade, že trieda má 31 žiakov (v takom prípade sa niekedy môže stať, že každý žiak bude vyžrebovaný práve 3x), tak takmer vždy bude toto riešenie nespravodlivé. Navyše si môžete uvedomiť, že ani pri hode kockou sa nám po 6 hodoch nemusí vystriedať všetkých 6 hodnôt na kocke.

Program môžeme vylepšiť aj takýmto užívateľským prostredím:

obrazok

Vaše zaujímavé riešenia:

Úlohu riešili 4 tímy, objavilo sa viacero ďalších správnych a zaujímavých postupov:

  • čísla ste najprv vygenerovali a až potom ste v cykle zisťovali počet vyžrebovaní konkrétneho žiaka
  • objavila sa veľmi pekná úvaha o tom, že príkaz nahodne generuje hodnoty v závislosti od viacerých faktorov (napr. aktuálny čas), o čom sa dozviete pri hlbšom štúdiu programovacích techník v budúcnosti
  • objavil sa aj návrh na iný spôsob určovania predsedu, pripájame komentár:
    "Predseda by sa mohol voliť aj tak, že by sa vystriedali všetci a až tak by sa začali žiaci ako predsedovia opakovať, dalo by sa to zadať aj ako poznámka k programu tejto úlohy."
  • na žrebovanie žiakov ste použili prácu s vytvoreným zoznamom všetkých žiakov :ziaci
       urob "vyzrebovany ?prvok :ziaci
  • na výpis textu na obrazovku ste si vytvorili vlastnú procedúru:
       viem APPEND :a
         pis :a
       koniec

Najčastejšie chyby a návrhy na vylepšenie:

  • chýbal komentár k spravodlivosti riešenia
  • pri generovaní náhodného čísla sa generovala aj nula, čo nezodpovedá žiadnemu žiakovi v triednej knihe, keďže príkaz nahodne (:p + 1) generuje iný rozsah hodnôt ako príkaz (nahodne :p) + 1