A KöMaL 2010. októberi informatika feladatai
Kérjük, ha még nem tetted meg, olvasd el a versenykiírást.
Feladat típusok elrejtése/megmutatása:
I-jelű feladatokA beküldési határidő 2010. november 10-én LEJÁRT. |
I. 247. (É) Egy automata fizetőparkoló be- és kijáratai két-két, egymás után elhelyezett fénykapuval és rendszámleolvasó kamerával vannak felszerelve. A járművek a fénykapukon áthaladva megszakítják a fény útját, amely események időpontjait és a leolvasott rendszámokat a mérés-adatgyűjtő rendszer egy szövegállományban rögzíti.
A parkolóban 8:00:00 és 17:59:59 időpontok között kell fizetni. A fennmaradó időszak ingyenes, de biztonsági okokból az adatokat ilyenkor is rögzítik.
A honlapunkról letölthető parkolo.be állományban egy nap adatai találhatóak. Minden egyes sorban a külső, illetve belső fénykapu megszakításának óra, perc, másodperc formátumú időpontja és az áthaladó a jármű rendszáma áll.
Például:
3 32 42 3 32 44 JLQ-960
3 45 16 3 45 13 JOJ-962
3 57 3 3 57 1 AJA-221
...
A példa jelentése:
-- Az első sor szerint a jármű 3 óra 32 perc 42 másodperckor szakította meg a külső fénykapu útját és 3 óra 32 perc 44 másodperckor a belsőét. A második időpont a későbbi, tehát a jármű befelé ment át a kapun.
-- A második sor szerint a JOJ-962 rendszámú jármű a kapun kifelé haladt át.
Készítsünk programot i247 néven, amely az alábbi problémákat oldja meg.
A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például 3. feladat:).
1. Olvassa be a parkolo.be állományban talált adatokat, és annak felhasználásával oldja meg a következő feladatokat.
2. Határozza meg az adatállomány minden bejegyzéséhez, hogy a jármű a parkolóba be- vagy kilépett. Írja ki a képernyőre a rendszámokat, és melléjük a Be vagy Ki szót.
3. Írja ki a képernyőre, hogy a nap melyik órájában érkezett a parkolóba a legtöbb jármű.
4. Határozza meg, hogy hány különböző rendszámú jármű haladt át a parkoló kapuin.
5. Összesítse a legalább egyszer a parkolót elhagyó járművek egész napi parkolási idejét és írassa ki a képernyőre a legtöbb időt ott töltő járműét, a jármű rendszámával együtt.
6. Határozza meg minden kilépéshez, hogy kell-e és ha igen hány megkezdett óra után fizetni. Az eredményeket a parkolo.ki szöveges állományba rendszám és órák száma párban írassa ki.
Beküldendő a program forráskódja (i245.pas, i245.cpp, ...), valamint a program rövid dokumentációja (i245.txt, i245.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
I. 248. Egy N×N képpontból (N100) álló fekete-fehér képen egyetlen folytonos fekete vonal van. A vonal úgynevezett lánckódját ismerjük és feladatunk ebből a képet előállítani.
A lánckód a kezdőpont koordinátáiból és a vonal körüljárása során kapott iránykódsorozatból áll. A kezdőpont a vonal egy tetszőleges végpontja. Az iránykódokat úgy állították elő, hogy a kezdőponttól indulva haladtak a vonalon annak másik végéig, és közben minden lépésben feljegyezték a lépés irányát. Egy-egy pontból 8 irányba lehet lépni, ezeket az ábrán látható számokkal kódoljuk.
Táblázatkezelő program segítségével egy vonal lánckódja alapján állítsuk elő a képét.
Készítsünk egy ,,Be'' nevű munkalapot, amelyen a következőket helyezzük el:
-- a kezdőpont koordinátáit
-- az iránykódokat, amelyeket egymás alá lehessen beírni
-- a segédtáblázatokat és számításokat, amelyek a kép előállításához szükségesek. A számításoknál vegyük figyelembe a kép lehetséges maximális méretét.
Készítsünk egy ,,Ki'' nevű munkalapot, amelyen a képet jelenítjük meg. Az oszlopok szélességét és a sorok magasságát állítsuk be úgy, hogy a cellák négyzet alakúak és láthatóak legyenek a képernyőn. A vonal pontjait tartalmazó cellákat tetszőleges karakterrel jelöljük meg. Ezek felhasználásával jelenítsük meg a képet a mintának megfelelő formátumban.
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.
Példa a munkalapokra:
Beküldendő a táblázatkezelő munkafüzet (i246.xls, i246.ods, ...), illetve egy rövid dokumentáció (i246.txt, i246.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)
I. 249. A reguláris kifejezés egy minta, amelyre akár több szöveg is ráillik, ezáltal jól használható olyan programokban, ahol bizonyos szövegek (e-mail cím, URL) szerkezetét kell ellenőrizni.
A reguláris kifejezésekről itt is tájékozódhatunk.
Az alábbi megbetűzött feladatokhoz keressük a megfelelő reguláris kifejezést. Ha több helyes válasz is lehetséges, a legkisebb karakterszámú kifejezés megadására kell törekedni.
A feladatok megoldása során az alábbi fájlokat használjuk, amelyeknek minden sora helyes:
-- kartya.txt: a fájl egyes sorai a francia kártya egy-egy lapját tartalmazzák szín, szóköz, érték formában (ékezet nélküli karaktereket használunk).\ Például: kor asz, karo kiraly, pikk 10, treff also.
-- email.txt: a fájl egyes sorai egy-egy e-mail címet tartalmaznak.\ Például: igazgato@iskola.hu.
-- telefon.txt: a fájl egyes sorai egy-egy telefonszámot tartalmaznak.\ Például: (30)555-55-55, illetve (46)555-555 formában.
-- rendszam.txt: a fájl egyes sorai rendszámokat tartalmaznak.\ Például: KUTYA-1, PAPA-05, ABC-123 (a betűk mind ékezet nélküliek).
Jelenítsük meg a megfelelő fájl azon sorait, amelyek eleget tesznek a következő feltételeknek:
a) a rendszámban szerepel az ,,A'' és a ,,3'' is;
b) három betű karakter, kötőjel, három számjegy karakter formájú rendszámokat tartalmaznak;
c) piros színű (kőr vagy káró) lapot tartalmaznak;
d) számozott lapokat tartalmaznak;
e) mobil telefonszámokat tartalmaznak (20, 30, 70 a körzetszám);
f) nem mobil telefonszámokat tartalmaznak;
g) a ,,@'' (kukac) és ,,.'' (pont) karakteren kívül csak az angol ábécé kisbetűit tartalmazzák és ,,.hu''-ra végződnek;
h) a vezetéknév.keresztnév@... szerkezetű e-mail címek közül azokat, ahol a vezetéknév kovacs.
A feladatok nem nehezedő sorrendben szerepelnek. A beküldött megoldásokat az egrep programmal ellenőrizzük, mely Windows és Linux operációs rendszerek alá egyaránt szabadon letölthető.
Egyszerű példa az egrep program használatára: Keressük meg a kodok.txt állomány azon sorait, amelyek legalább egy számjegyet tartalmaznak:
egrep "[0-9]" kodok.txt
Beküldendő az i247.txt dokumentum, amely betűjelzéssel azonosítva tartalmazza a fenti feladatok megoldását és a használt operációs rendszert nevét, illetve a kipróbáláshoz használt egrep program verziószámát.
(10 pont)
S-jelű feladatokA beküldési határidő 2010. november 10-én LEJÁRT. |
S. 56. Adott egy város úthálózata a csomópontokkal (kereszteződésekkel), illetve az ezeket összekötő kétirányú utcákkal. Egy olyan városnéző busszal szeretnénk bejárni a város összes csomópontját (az utcák közül nem kell mindet bejárni), amelynek elromlott a hátramenete, így nem tud megfordulni, azaz nem térhet vissza abba a csomópontba, amelyikből éppen most jött (egyébként bármely utcán, illetve csomóponton bárhányszor járhatunk).
Írjunk programot, amely beolvassa a standard bemenetről a város úthálózatának leírását, és meghatározza a csomópontoknak egy olyan sorozatát, amelyben szerepel minden csomópont, az egymás utáni csomópontok közvetlen összeköttetésben állnak, és nincs benne ,,megfordulás'', azaz olyan három egymás utáni csomópont, amelyekből az első és a harmadik megegyezik. Feltehetjük, hogy bármely két csomópont közt legfeljebb egy utca vezet, hogy a város úthálózata összefüggő (azaz a város bármely pontjából bármely pontjába eljuthatunk), továbbá hogy nincs a városban zsákutca, azaz nincs olyan csomópont, amihez csak egy utca kapcsolódik.
A bemenet szerkezete a következő: az első sorban két, szóközzel elválasztott egész szám, a város csomópontjainak () és az utcáinak () száma található. A következő M sor mindegyikében, szóközzel elválasztva, egy-egy utca két végpontjának Xi, Yi sorszáma szerepel (1XiYiN).
A standard kimenet egyetlen sorába írjuk ki a feladat feltételeinek megfelelő csomópontsorozatot.
Beküldendő a feladat megoldását tartalmazó forrás és projektállományok (az .exe és más a fordító által generált kiegészítő állományok nélkül), valamint a megoldás menetét röviden bemutató dokumentáció (s56.txt, s56.pdf, ...) egy tömörített mappában (s56.zip).
(10 pont)
Figyelem!
Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.