Autorské riešenie Najprv vypočítame celkovú cenu nákupu. Cenu kúpených hrušiek vypočítame ako súčin počtu hrušiek a ceny jednej hrušky. Podobne cenu kúpených jabĺk vypočítame ako súčin počtu jablk a ceny jedného jablka. Celkovú cenu nákupu vypočítame ako súčet cien kúpených hrušiek a jablk, t. j. spolu = počet_hrušiek × cena_hrušky + počet_jablk × cena_jablka Aby sme zaplatili za nákup čo najmenej mincí, budeme sa snažiť vyberať najdrahšie mince, t.j. trojcentové mince a zvyšok doplníme dvojcentovými mincami. Ak je celková cena nákupu menšia ako najmenšia hodnota mince, t. j. 2€, tak vypíšeme, že nevieme pomocou týchto mincí zaplatiť daný nákup. Ak celková cena nákupu je deliteľná tromi, tak na zaplatenie nákupu použijeme len trojcentové mince. Ak je zvyšok pri delení celkovej ceny číslom 3 rovný 2, tak zaplatíme jednu dvojcentovú mincu a zvyšok trojcentovými mincami. Ak je zvyšok pri delení celkovej ceny číslom 3 rovný 1, tak zaplatíme dve dvojcentové mince a zvyšok trojcentovými mincami.
Pri programovaní na určenie zvyšku premennej :spolu po delení číslom 3 použijeme operáciu zvyšok t. j. zvyšok :spolu 3. Na celočíselné delenie použijeme operáciu cPodiel. Na vetvenie výpočtu na tri rôzne prípady podľa zvyšku pri delení číslom 3 použijeme príkaz vetvenia akJe. Riešenie úlohy môže vyzerať nasledovne: viem vypočítaj :pocetH :cenaH :pocetJ :cenaJ Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 23 tímov. Len jeden tím "vyssia inteligencia" získal plný počet bodov, lebo nezabudli ošetriť prípad, kedy sa úloha nedá vyriešiť (celková suma nákupu je menšia ako hodnota najmenšej mince, v našom prípade pod 2 centy). Vaše riešenia boli veľmi pestré, niektorí ste uviedli aj grafické prostredie pre pohodlnejšie zadávanie jednotlivých parametrov. S prvou časťou úlohy - spočítať celkovú hodnotu nákupu - nebol žiaden problém. V druhej časti úlohy bolo potrebné ošetriť všetky tri možností - ked zvyšok pri delení celkovej hodnoty nákupu číslom 3 bol postupne 0, 1, 2. Niektorí riešitelia nepoznali funkciu (operáciu) celočíselného delenia cPodiel, resp. div, iní zase funkciu zvyšku pri delení daným číslom zvyšok resp. mod. Potešili nás stručné (aj keď nie celkom správne) riešenia tejto úlohy: Temni rytieri viem vypocitaj :ph :pj :ch :cj Richard viem vypocitaj :j :h :cj :ch Nezabúdajte pri riešení úloh pekne odsadzovať programový kód, používať vhodné názvy premenných a tiež komentáre. Pozor, hlavne začinajúci súťažiaci, aby ste neukladali do priestoru pre 3. úlohu riešenia iných úloh napr. 4. úlohy, čo sa stalo 3 riešiteľom. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |