Autorské riešenie
Úlohou je vydláždiť miestnosť rozmeru 600 x 800 cm. Keďže dlaždičky sú štvorcové, šírku aj dľžku majú rovnaké, preto stačí poznať veľkosť dlaždičky, ktorá bude parametrom procedúry. Ak by kachličky v jednom rade pokryli celú šírku miestnosti, stačilo by deliť šírku miestnosti s veľkosťou kachličky, a dostali by sme presne koľko kachličiek je potrebných v jednom rade.
Ale občas ostane zvyšná časť, kde už celá kachlička sa nezmestí, vtedy ich treba rezať. Podľa podmienky už zvyšné časti prerezaných kachličiek sa nedajú ďalej použiť, preto v každom rade treba pridať ešte jednu kachličku.
Počet kachličiek v šírke miestnosti potom vypočítame tak, že určíme pomocou celočíselného podielu koľko celých kachličiek potrebujeme. Potom otestujeme, či ostane nejaká zvyšná časť miestnosti pomocou funkcie zvyšok pri celočíselnom delení. Ak je tam nejaký zvyšok, teda ak zvysok 600 :PocetSirka > 0, potom pripočítame ešte jednu kachličku. To isté treba urobiť aj pri určení počtu kachličiek v dľžke miestnosti, lebo aj tam môže ostať nepokrytá časť. Ak poznáme počet kachličiek potrebných v šírke a dľžke, vynásobením dostaneme celkový počet potrebných kachličiek. Nakoniec ostáva určiť počet balení, pretože kachličky sa predávajú len v 12 kusových baleniach. Tu opäť použijeme celočíselné delenie. Ak počet potrebných kachličiek nie je násobkom 12, musíme ešte zvýšiť počet balení o jeden. Možné riešenie v Imagine: ;Imagine
logo
viem dlazdice :velkost ;určenie počtu kachličiek potrebných v šírke haly urobtu "PocetSirka cpodiel 600 :velkost ak zvysok 600 :PocetSirka > 0 [urobtu "PocetSirka :PocetSirka+1] ;určenie počtu kachličiek potrebných v dľžke haly urobtu "PocetDlzka cpodiel 800 :velkost ak zvysok 800 :PocetDlzka > 0 [urobtu "PocetDlzka :PocetDlzka+1] ;určenie celkového počtu kachličiek urobtu "pocetKachliciek :PocetSirka * :PocetDlzka pis :pocetKachliciek ;určenie počtu balení potrebných pre vydláždenie urobtu "pocetBaleni cpodiel :pocetKachliciek 12 ak zvysok :pocetKachliciek 12 > 0 [urobtu "pocetBaleni :pocetbaleni+1] pis (slovo "|Pocet potrebnych baleni kachliciek: | :pocetBaleni) koniec Vaše zaujímavé riešenia a najčastejšie chyby Niektorí ste nesprávne počítali s obsahmi. Najprv ste vypočítali obsah miestnosti, potom obsah jednej kachličky. Delením ste dostali počet kachličiek potrebných na vydláždenie, čo platí len v prípadoch, ak sa plocha dá vydláždiť celými kachličkami. V prípade necelej časti ste pripočítali ešte jednu kachličku na celý priestor, čo nestačí. Ako je znázornené aj na obrázku, v každom rade a v stľpci bude potrebné pridať kachličku. Viacerí počítate s globálnymi premennými (vytvárajú sa príkazom urob), pričom v týchto prípadoch, ak premenné používame len v rámci jednej procedúry postačia lokálne (vytvárajú sa príkazom urobtu). Nepovažujeme to za chybu, ale z hľadiska efektívnosti výpočtu je to výhodnejšie. Pozitívne hodnotíme prehľadný zápis a komentáre, a taktiež zmysluplné názvy premenných.
Veľmi pekné riešenie poslali nám tímy Kabby a Avenger, a
taktiež Pena a Programátori2017.
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |