Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 194. feladat (2008. október)

I. 194. A vonalkódoknak többféle típusa létezik, de a kereskedelemben a legelterjedtebb az EAN-13 (EAN = European Article Number, Európai árucikkszámozás), amely egy 13 jegyű számot ábrázol. A szám információtartalma:

Az egyes részek változó számú karakterből épülhetnek fel. A számtípus országkódot vagy terméktípust jelent. Például:

590 Lengyelország
594 Románia
599 Magyarország
600 - 601 Dél-Afrika
609 Mauritius
611 Marokkó
613 Algéria
977 Periodikák (ISSN)
978 Könyvek (ISBN)
979 Zene (ISMN)

Egy új termék gyártója a központi nyilvántartástól igényelheti az EAN-13 számot.

Az EAN-13 szám utolsó számjegye a véletlen elgépelés vagy a hibás leolvasás kiszűrését biztosító ellenőrző számjegy. Képzési szabálya: az első 12 számjegy közül a páratlan helyen állókat 1-gyel, a páros helyen állókat 3-mal szorozzuk meg, és a szorzatokat összegezzük, majd meghatározzuk az ellenőrző számjegyet, amely a 13. helyen fog állni. Ez az a szám, amit az összeghez hozzáadva az érték 10-zel oszthatóvá válik. Pl.:

5.1+9.3+0.1+7.3+4.1+6.3+0.1+8.3+0.1+3.3+5.1+9.3=140.

A 140 éppen osztható 10-zel, így nullát kell hozzáadni. Az ellenőrző számjegy ezért 0, tehát a példában szereplő EAN-13 szám helyes.

A vonalkód szerkezete:

- A számokat fekete-fehér területek (a leolvasó ezt képes érzékelni) kódolják.

- Az első, bal oldalon külön álló szám a kódolás módszerét határozza meg. Ennek vonalak nem felelnek meg, így más módszerrel van kódolva.

- A kód további része két számcsoportból áll. Elöl, hátul és a számcsoportok között két-két vékony elválasztó vonal van.

- A számokat 7 egységnyi szélességben 2-2 változó vastagságú vonal ábrázolja. Jelentse a fekete színt 1 és a fehéret 0. A vonalkódon belül háromféle kódolás fordul elő, jelöljük ezeket A-val, B-vel és C-vel. A vonalak számértéke az egyes kódolások szerint a következő:

Szám A B C
0 0001101 0100111 1110010
1 0011001 0110011 1100110
2 0010011 0011011 1101100
3 0111101 0100001 1000010
4 0100011 0011101 1011100
5 0110001 0111001 1001110
6 0101111 0000101 1010000
7 0111011 0010001 1000100
8 0110111 0001001 1001000
9 0001011 0010111 1110100

- Az első számcsoport (a bal oldali, önálló szám utáni 6 számjegy) A-val vagy B-vel, a második számcsoport (az utolsó 6 számjegy) C-vel van kódolva.

- Az EAN-13 kód első számjegye határozza meg az első számcsoport hat számjegyének kódolását. Ennek táblázata:

A példaként bemutatott -- lengyel lekváros üvegen szereplő -- vonalkód felépítése:

Az első szám 5, ami a vonalrendszerben közvetlenül nem jelenik meg, de az első számcsoport kódolását a táblázat szürke sora alapján meghatározza.

Vonalcsoport Jelentés Vonalrendszer
1. Bevezető két vékony vonal 101
2. [9] A kódolással 0001011
3. [0] B kódolással 0100111
4. [7] B kódolással 0010001
5. [4] A kódolással 0100011
6. [6] A kódolással 0101111
7. [0] B kódolással 0100111
8. Elválasztó két vékony vonal 01010
9. [8] C kódolással 1001000
10. [0] C kódolással 1110010
11. [3] C kódolással 1000010
12 [5] C kódolással 1001110
13. [9] C kódolással 1110100
14. [0] C kódolással 1110010
15. Záró két vékony vonal 101

A vonalrendszereket összefűzve állítjuk elő a teljes vonalkódot.

Táblázatkezelő program segítségével vizsgáljuk meg az A1 cellában megadott EAN-13 szám helyességét az ellenőrző számjegy alapján: a B1 cellába írjuk a ,,helyes'', vagy a ,,hibás'' szót a vizsgálat eredményeként. Állítsuk elő a megadott szám 15 részből álló vonalrendszerét 0-s és 1-es számjegyek segítségével az A2:A16 cellákba.

A megoldás során ne használjunk makrót vagy programmodult, kizárólag képleteket és beépített függvényeket. A felhasznált részletszámítások látszódjanak és semmilyen módon ne rejtsük el azokat. A kód meghatározásához szükséges segédtáblák lehetnek külön munkalapon.

Beküldendő a táblázatkezelő munkafüzet (i194.xls, i194.ods, ...), illetve egy rövid dokumentáció (i194.txt, i194.pdf, ...), amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziószáma, valamint a megoldás rövid leírása.

(10 pont)

A beküldési határidő 2008. november 17-én LEJÁRT.


Megoldásokról:

Sok jó megoldás mellett a feladatspecifikációt többen nem tartották be. A vonalkód működési elvét néhányan titkosításnak gondolták. Erről szó nincs. A vonalkód gyors, pontos és ellenőrzött adatrögzítő és kommunikáló eszköz. EAN 13 az UPC kód (Universal Product Code) továbbfejlesztéséből alakult ki. Ez az első világméretű termékazonosító rendszer és kódtípus. Az ellenőrző számjegyet majdnem mindenki jól határozta meg, annak ellenére, hogy a 13 jegyű szám számjegyekre bontása nem kívánt hatalmas függvényapparátust.

A vonalkód rendszer csoportjainak meghatározása kétszeres mélységű keresést igényel. Az első számjegy alapján kellett meghatározni az első számjegycsoport kódolás típusát, majd ennek és a megfelelő számjegyek ismeretében már a kódot.

A feladat Pap 987 Dávid által készített megoldása (i194.xls).

Különösen ötletes, hogy a vonalkód mintát feltételes formázás segítségével egy munkalapon megjelenítette.


Statisztika:

24 dolgozat érkezett.
10 pontot kapott:Dévényi Attila, Fehér Péter, Jákli Gábor, Kővágó Zoltán, Kristóf Tamás, Molnár Gábor, Pap 999 Dávid, Szabó 295 Gábor, Szabó 928 Attila, Szendrei Péter, Tóth Szabolcs, Uray Marcell János.
9 pontot kapott:Balla Attila, Debreceni Bálint, Englert Péter, Horváth 135 Loránd, Kapitány Ágoston.
7 pontot kapott:2 versenyző.
6 pontot kapott:3 versenyző.
3 pontot kapott:1 versenyző.
2 pontot kapott:1 versenyző.

A KöMaL 2008. októberi informatika feladatai