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

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ű feladatok

A 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)

megoldás, statisztika


I. 248. Egy N×N képpontból (N\le100) á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)

megoldás, statisztika


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)

megoldás, statisztika


S-jelű feladatok

A 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 (3\le N\le
10\;000) és az utcáinak (3\le M\le 1\;000\;000) 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 (1\leXi\neYi\leN).

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)

megoldás, statisztika


Figyelem!

Az informatika feladatok megoldásait ne e-mailben küldd be! A megoldásokat az Elektronikus munkafüzetben töltheted fel.