Autorské riešenie V tejto úlohe potrebujeme pre vstupný zoznam čísel napr. [30 40 20 10 50 80 70 30]
Stĺpcový graf vykreslíme tak, že v cykle budeme vykresľovať stĺpiky striedavo červenou a modrou farbou s výškou určenou číslom v zozname. Procedúra stĺpik na vykreslenie jedného stĺpika vyzerá nasledovne: viem stlpik :vyska :sirka :farba Celý stĺpcový graf (pozri obrázok) vykreslíme pomocou cyklu prePrvky. Aby sme odlíšili nepárne a párne pozície, použijeme prkaz vetvenia ak2 a operáciu mod. prePrvky "i :z [
Okrem kreslenia potrebujeme aj spočítavať čísla na párnych a nepárnych pozíciach. Použijeme na to premenné :prvy a :druhy, ktoré na začiatku vynulujeme. V cykle prePrvky okrem vykresľovania budeme aj vypočítavať tieto súčty. Po vykreslení grafu a vypočítaní súčtov napokon porovnáme hodnoty :prvy a :druhy a určíme víťaza a tiež rozdiel časov medzi víťazom a porazeným hráčom. Výsledná procedúra vyhodnoť vyzerá nasledovne: viem vyhodnot :z Pri tejto úlohe sme chceli dosiahnúť, aby ste si precvičili prácu so zoznamami, prácu s lokálnymi premennými, operáciou mod (zvyšok po delení), prípadne abs (absolútna hodnota čísla), príkazmi opakovania (prePrvky, opakuj) a príkazmi vetvenia (ak2). Vaše zaujímavé riešenia a najčastejšie chybyDo riešenia úlohy sa pustili takmer všetky tímy a celkom úspešne. Tí, čo nepoznajú zoznamy, vyriešili úlohu pre 4, resp. 8 stromov. Dva tímy vyriešili úlohu pre ľubovoľný počet stromov, pričom v svojich riešenia použili zoznamy. Niektorí pre odlíšenie párnych a nepárnych pozícii stĺpčekov použili príkaz vetvenia ak2 a pomocnú premennú, ktorej hodnotu menili z 0 na 1 a z 1 na 0. Takýto prepínač sa dá realizovať aj pomocou výrazu 1-a, pričom na začiatku nastavíme hodnotu a=0. Niektorí šikovníci na kreslenie stĺpikov použili nastavenie hrúbky pera a príkazy dopredu a vzad. Potešila nás aj kultúra zápisov programov - používanie komentárov, odsadzovanie a písanie jednotlivých príkazov po jednom do každého riadku. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |