Mathematical and Physical Journal
for High Schools
Issued by the MATFUND Foundation
 Already signed up? New to KöMaL?

# Problem I. 247. (October 2010)

I. 247. Two successive photocells and a camera for reading off number plates are installed both at the entrance and at the exit of an automated paid parking lot. Any vehicle passing through a gate activates both photocells so that both crossing time instants and the number plate are recorded in a text file.

One has to pay for parking between 8:00:00 and 17:59:59. The remaining period is for free, nevertheless recording takes place all day for security reasons.

The file contains data recorded on a specific day. Each line of the file contains the time instants (in an hour-minute-second format) of crossing the outer and inner photocells together with the registration identifier from the number plate.

The meaning of the first line of the example is the following: a vehicle crossed the outer photocell at 3:32:42, and the inner one at 3:32:44. Since the latter occurred later, the vehicle entered the parking lot. The second line of the example tells us that vehicle JOJ-962 left the parking area.

3 32 42 3 32 44 JLQ-960

3 45 16 3 45 13 JOJ-962

3 57 3 3 57 1 AJA-221

...

Your program i247 should solve the following tasks. When writing on the screen, the number of the actual task (e.g. ,,Task #3'') should always be displayed.

1. Read the data from file parkolo.be, then solve the tasks below.

2. For each line of the text file, determine whether the actual vehicle entered of left the parking place. Display the registration identifiers together with either ,,In'' or ,,Out''.

3. Display the hour in which the most vehicles entered the parking lot.

4. Determine the number of different registration identifiers passing through the gates.

5. Summarize parking times during the day for vehicles leaving the parking place at least once. Display this information together with the registration identifier of the vehicle spending the most time inside.

6. Determine for each exit whether the vehicle has to pay and for how many hours. (At the beginning of each new hour the next 60 minutes will have to be completely paid.) Results should be written into the text file parkolo.ki as pairs of registration identifiers and the corresponding number of hours.

The source code (i247.pas, i247.cpp, ...) together with a short documentation (i247.txt, i247.pdf, ...) -- also describing which developer environment to use for compiling, further a brief description of your solution--should be submitted in a compressed file (i247.zip).

(10 pont)

Deadline expired on November 10, 2010.

Sorry, the solution is available only in Hungarian. Google translation

Megoldásokról

Az érettségi típusú feladatra 17 megoldás érkezett. Viszonylag alacsony a megoldások száma ahhoz képest, hogy az érettségi vizsgára való felkészüléshez jól használható. Kevés maximális pontszámú feladat születet. Általában a 6. részfeladat megoldása volt a téves. A leírások beküldésével még mindig gondok vannak. Ez több versenyzőnél elmaradt.

Mintamegoldásként Gema Barnabás 10. osztályos (Veszprém, Lovassy László Gimnázium) tanuló munkáját közöljük: i247.pas, parkolo.ki

Az egyes feladatokat a könnyebb áttekinthetőség érdekében külön eljárásba szedtem. Feltételeztem, hogy a parkoló vezetősége minél több hasznot szeretne, ezért a külső fénykaputól a külső fénykapuig tekintettem a parkolási időt.

1. Feltételeztem, hogy az adat nem tartalmaz 5000-nél több bejegyzést, így ennél többet nem tud kezelni a program. A program a bemenet minden adatát eltárolja egy tömbben, külön órára, percre, és másodpercre bontva az időket. Egy változóban eltárolja a bemeneti rekordok számát is.

2. A program először megvizsgálja, hogy az óra alapján eldönthető-e az irány. Ha nem, akkor megvizsgálja a percet, majd a másodpercet. Az irányokat a kiíráson kívül el is tárolja, mert a további feladatoknál szükség lesz rá. Ha nem dönthető el az irány, akkor három kérdőjelet ír ki a program.

3. A program először minden órában az érkező autók számát nullára állítja. Ezután az adat minden rekordján megvizsgálja az irányt. Ha az irány be, akkor a belépés órájának számlálóját megnöveli eggyel. Ezután megkeresi a legforgalmasabb órát, és kiírja.

4. Létrehoztam egy tömböt, amiben az egyes autók különböző adatait fogom tárolni, amik majd a következő feladatoknál is szükségesek. A program ismét megvizsgálja az adat összes sorát. Minden rendszámot megpróbál visszakeresni a létrehozott tömbből. Ha megtalálja, akkor a következő sorra ugrik, ha nem, akkor hozzáadja a tömbhöz. Eközben számolja a hozzáadott rendszámokat, majd az eredményt eltárolja és kiírja.

5. A program megvizsgál minden kilépést, és az előző feladatban létrehozott tömbben minden autónál jelzi, hogy elhagyta-e a parkolóházat. Ezután ismét végigfuttatja az adatot. Ha egy belépés egy olyan autóhoz tartozik, ami elhagyta a parkolót, akkor annál az autónál eltárolja a belépés idejét. Kilépéseknél egy számlálóhoz hozzáadja a legutolsó belépéstől a kilépésig eltelt időt. Ha nem volt előtte belépés, akkor 0:00:00-től számolja az időt. Ezek után minden autónál megvizsgálja, hogy maradt-e belépési időpont a tömbben. Ha maradt, akkor attól az időponttól 23:59:59-ig eltelt idő hozzáadja a számlálóhoz. Ezek után meghatározza a legtöbb időt ott töltő autó rendszámát és az idővel együtt kiírja.

6. A program létrehozza a kimenetfájlt, majd az előzőkben használt tömbben minden autó első belépését beállítja 8 órára, mivel ettől kell fizetni. Ezután végigfuttatja az adatot. Ha a rekord belépés és legkorábban 8 órakor történik, akkor a belépéssel felülírja a 8 órás belépést. Ha a rekord kilépés és legkésőbb 8 órakor történik, akkor kiírja, hogy nem kell fizetni. Ha 8 óra után és 18 óra között van, akkor a legutolsó belépéstől a kilépésig számolva (ha aznap nem volt 8 óra után belépés, akkor 8 órától) hány megkezdett óra után kell fizetni. Ha a kilépés 18 óra után történt, akkor kiírja, hogy a legutolsó belépéstől (ha nem volt, akkor 8 órától), 17:59:59-ig hány megkezdett óra után kell fizetnie az autósnak. Ha a legutolsó belépés legkorábban 18 órakor történt, akkor kiírja, hogy nem kell fizetni.

### Statistics:

 14 students sent a solution. 10 points: Barta 111 János, Gema Barnabás, Hoffmann Áron, Kovács Kornél, Nánási József, Szabó 928 Attila. 9 points: Kompis Ádám. 8 points: 4 students. 7 points: 2 students. 5 points: 1 student.

Problems in Information Technology of KöMaL, October 2010