Autorské riešenie
Táto úloha nie je veľmi náročná na riešenie. Je potrebné si však pozorne prečítať zadanie a porozumieť mu. Podľa zadania:
Ešte predtým ako sa pustíme do vytvárania samotnej procedúry/funkcie uvedomme si, aké parametre by sme jej mali definovať. Na poschodí bývajú traja susedia a každý má svoj nákupný zoznam. Tieto tri zoznamy by mali byť parametrami. Výsledná procedúra/funkcia môže vyzerať nasledovne: # Python def spolocny_zoznam(nakupujuci, sused1, sused2): spolocne_tovary = nakupujuci.copy() for tovar in sused1: if tovar in nakupujuci: spolocne_tovary.append(tovar) for tovar in sused2: if tovar in nakupujuci: spolocne_tovary.append(tovar) return spolocne_tovary print(spolocny_zoznam(['mlieko', 'maslo', 'chlieb', 'chlieb'], ['maslo', 'chlieb', 'párky'], ['párky', 'chlieb', 'horčica'])) # Imagine Logo
viem spolocny_zoznam :nakupujuci :sused1 :sused2
;spolocny_zoznam [mlieko maslo chlieb chlieb]
[maslo chlieb párky]
[párky chlieb horčica]
urobTu "spolocne_tovary :nakupujuci
prePrvky "tovar :sused1[
ak prvok? :tovar :nakupujuci [
urobtu "spolocne_tovary vlozPosledny :tovar :spolocne_tovary
]
]
prePrvky "tovar :sused2[
ak prvok? :tovar :nakupujuci [
urobtu "spolocne_tovary vlozPosledny :tovar :spolocne_tovary
]
]
vysledok :spolocne_tovary
koniec
Všimnime si ešte jednu vec v riešení v jazyku Python. Do spoločného zoznamu nepridávame zoznam nakupujúceho ale jeho kópiu. Výsledok by sa síce nezmenil, ale ak by sme chceli s pôvodným zoznam nakupujúceho v hlavnom programe pracovať, už by bol zmenený. Preto je výhodnejšie vytvoriť si kópiu a pôvodný zoznam nechať nezmenený. Vaše zaujímavé riešenia a najčastejšie chyby Častou chybou bolo, že do spoločného zoznamu ste zaradili všetky tovary zo všetkých zoznamov. Niektorí z vás zbytočne prechádzali súčasne dvoma zoznamami (nakupujúci a sused). Výsledkom bolo, že niektoré tovary sa do spoločného zoznamu pridali viac krát než bolo potrebné. Zoznamy ako také umožňujú operácie pomocou ktorých sa s nimi dá "šikovne" pracovať. Je výhodné ich poznať a používať. V opačnom prípade vaše riešenie môže vyzerať dosť neprehľadne. Niektorí z vás si riešenia zbytočne skomplikovali, keď vytvárali kód na načítanie tovarov susedov. Toto podľa zadania nebolo potrebné riešiť. Komplikáciu si spôsobili aj tí, ktorí zoznam tovarov reprezentovali ako reťazec, kde boli jednotlivé položky oddelené medzerou alebo čiarkou. Poslednou častou chybou bolo, že procedúra/funkcia výsledok vypísala. Podľa zadania ho mala vrátiť. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |