Autorské riešenie
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:Vaše zaujímavé riešenia: Úlohu riešili 4 tímy, objavilo sa viacero ďalších správnych a zaujímavých postupov:
Najčastejšie chyby a návrhy na vylepšenie:
| ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |