Autorské riešenie
Riešenie tejto úlohy pozostáva z dvoch častí:
Osemciferný kód EAN-8 vypočítame vynásobením zadaného sedemciferného čísla číslom 10 a pripočítaním kontrolného súčtu sedemciferného čísla. Na výpočet kontrolného súčtu použijeme vlastnú funkciu (operáciu), ktorá 8.cifru určí ako doplnok do najbližieho násobku desiatky trojnásobku súčtu čísel na nepárnych pozíciach a súčtu čísel na párnych pozíciach. Procedúra skompletujKod a funkcia (operácia) kontrolnySucet môžu vyzerať, napr. takto: viem skompletujKod :cislo viem kontrolnySucet :cislo Na vyriešenie druhej časť úlohy využijeme údaje o kódovaní jednotlivých cifier 0 až 9 v šavej a pravej časti kódu a tiež kódovaní počiatočnej, strednej a koncovej zarážky. Tieto údaje sú uvedené v procedúre start, ktorá je v Imagine projekte ako súčasť zadania úlohy: viem start Na lepšie pochopenie princípu kódu EAN-8 nám pomôže aj obrázok 1 uvedený v zadaní úlohy:
Obr 1. Kód EAN-8 pre číslo 85812576 so zvýraznením jednotlivých čísel a zarážok. Na vykreslenie čiaroveho kódu cifry alebo zarážky vytvoríme procedúru kresliCifru, ktorá môže vyzerať, napr. takto: viem kresliCifru :bitovyRetazec :dlzkaCiary :sirkaCiary Na vykreslenie celého čiarového kódu s 3 zarážkami a 8 ciframi a tiež s výpisom 8-ciferného čísla vytvoríme procedúra kresliKod, ktorá môže vyzerať, napr. takto: viem kresliKod :dlzkaCiary :sirkaCiary Napokon vytvoríme hlavnú procedúru skompletujAVytlacKod volajúcu procedúry skompletujKod a kresliKod, ktorá môže vyzerať, napr. takto: viem skompletujAVytlacKod Táto súťažná úloha je zameraná na použitie stratégie riešenia rozlož problém do podproblémov, pochopenie princípu čiarových kódov (kódu EAN-8), prácu s procedúrami a funkciami (operáciami) s parametrami, zoznamami, použitie príkazov opakovania a vetvenia, použitie funkcii div a mod vo výpočtoch. Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia tejto úlohy pre kategóriu EXPERT sa zapojili 3 zo 4 tímov. Tímy JM&JM a ikztzu získali plný počet bodov. Celkový priemer úspešnosti odovzdaných riešení bol 7,3 bodu z maximálneho počtu 8 bodov (91,7% úspešnosť). V jednom riešení autori nesprávne vykresľovali zväčšené kódy, kde sa nedodržali pomery medzi šírkou čiernych a bielych pásov. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |