Autorské riešenie Túto úlohu môžeme riešiť rôznymi spôsobmi. Jedným z nich je nasledovný postup:
Najskôr vyriešme to, ako prejsť všetkými objednávkami. Samotný kód môžeme umiestniť do procedúry vypocitajHotovost:
viem vypocitajHotovost Výslednú sumu si budeme postupne vypočítavať v premennej "hotovost. Na začiatku jej hodnotu nastavíme na 0. V cykle prePrvky postupne spracujeme všetky objednávky. Každá objednávka je dvojprvkový zoznam. Prvý prvok je názov šalátu (prvok 1 :objednavka) a druhý prvok je počet objednaných porcií (prvok 2 :objednavka). Na zistenie ceny konkrétneho šalátu sme si vytvorili procedúru zistiCenu:
viem zistiCenu :nazovJedla Pomocou cyklu prePrvky postupne prechádzame položkami cenníka. Každá položka je dvojprvkový zoznam. Prvý prvok je názov šalátu (prvok 1 :polozka) a druhý prvok je jeho cena (prvok 2 :polozka). Ak v zozname nájdeme položku, ktorá obsahuje náš hľadaný šalát (prvok 1 :polozka = :nazovJedla), procedúra vráti jeho cenu (vysledok prvok 2 :polozka). Všimnime si ešte jednu vec, že nemusíme vždy prechádzať celým cenníkom. Stačí ak nájdeme požadované jedlo. Príkaz vysledok prvok 2 :polozka ukončí celú procedúru a vráti cenu hľadaného šalátu (a to aj napriek tomu, že sme neprehľadali celý cenník). Tým sme celú úlohu vyriešili. Vaše zaujímavé riešenia a najčastejšie chyby Vaše riešenie by sa dali rozdeliť do dvoch. Do prvej skupiny patria riešenie tých, ktorí poznajú dátovú štruktúru zoznam a vedia s ňou pracovať. Títo úlohu vyriešili väčšinou správne. Do druhej skupiny patri tí z vás, ktorý zoznamy nepoznajú. Títo z vás z úlohy nevyriešili takmer nič. V správnych riešeniach ste často používali množstvo premenných, ktorým ste dávali "nelogické" mená a tak sa váš program stal ťažšie čitateľný. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |