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. 614. feladat (2024. január)

I. 614. Egy iskolai nyári táborban az egyik este szellemi vetélkedőt tartanak. A vetélkedő során kérdéseket tesznek fel a csapatoknak, valamint megadnak négy választ. A négy válaszból minden kérdésre pontosan egy a helyes. A kerdesek.txt UTF-8 kódolású szöveges állomány hat-hat egymás követő sorában van minden kérdés: az első sorban a feltett kérdés, a következő négy sorban a lehetséges válaszok, és a hatodik sorban a helyes válasz sorszáma. Az állomány első néhány sora a következő, amelyből kiolvasható, hogy 23 fenyőfa áll a tábor területén, és 7 vízibiciklivel lehet evezni a tavon.

Készítsünk programot i614 néven, amely beolvassa az adatokat tartalmazó állományt, majd válaszol az alábbi kérdésekre és megoldja a kitűzött feladatokat. Amennyiben a szöveges állomány ékezethelyes kezelése nem megoldható, akkor használjuk a kerdesek2.txt egyszerű ASCII kódolású állományt, amelyben az ékezetes karakterek helyett azok ékezet nélküli párja szerepel.

A felhasználóval történő párbeszéd során mindig adjuk meg, hogy milyen adatot kérdezünk és milyen eredményt adunk meg, illetve a feladatok megoldása előtt írjuk ki a feladat sorszámát. A megoldáshoz mintaként használhatjuk a feladatok után mellékelt mintát.

  1. Írjuk ki, hogy hány kérdés szerepel az adatállományban, valamint írjuk ki az első kérdést és a hozzá tartozó válaszokat, jelezve, hogy melyik a jó válasz. A válaszokat egy-egy nagybetűvel és nyitó zárójellel vezessük be.
  2. Adjuk meg, hogy melyek azok a kérdések, amelyekre a válaszok mindegyike egész szám. Írjuk ki a kérdések első 30 karakterét és három pontot, ha a kérdés hosszabb 30 karakternél, illetve a teljes kérdést, ha az nem hosszabb 30 karakternél. A kérdést követően írjuk ki a válaszok számát egy-egy szóközzel elválasztva úgy, hogy a helyes választ tegyük zárójelbe.
  3. Készítsünk az állomány adataiból egy 10 kérdésből álló véletlen kérdéssorozatot. Figyeljünk arra, hogy ne szerepeljen egy kérdés sem többször. Írjuk ki a kérdések szövegét és lehetséges válaszokat az 1. feladatban megadott formában. Kérjük be a felhasználó tippjét, ami az a, b, c, d betűk egyike lehet kis- vagy nagybetűvel. A hibás tippeket ne fogadjuk el, tehát addig ne lépjünk tovább, amíg a felhasználó a négy elfogadható betű egyikét nem adja meg.
  4. Az előző feladatban kapott tippek és a helyes válaszok alapján adjuk meg, hogy a felhasználó hány kérdésre adott helyes választ, valamint készítsünk egy nemjo.txt szöveges állományt, amelybe elhelyezzük azokat a kérdéseket, amelyekre a felhasználónak nem sikerült helyesen válaszolnia. A fájlban minden kérdés két sorban szerepeljen: az egyik sorban a kérdés szövege, az őt követő sorban a helyes válasz. A kérdések és válaszok között egy üres sort hagyjunk ki. Ha a felhasználó minden kérdésre jól válaszolt, akkor a fájlba ne írjunk semmit.

Minta egy lehetséges programfutásra:

Beküldendő egy tömörített i614.zip állományban a program forráskódja és rövid dokumentációja, amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

A megoldáshoz szükséges letölthető állományok: kerdesek.txt, kerdesek2.txt.

(10 pont)

A beküldési határidő 2024. február 15-én LEJÁRT.


Mintamegoldásként Szabó Imre Bence budapesti, 10. évfolyamos tanuló C++ nyelven készült megoldását (i614.cpp), valamint Nagy Korina kecskeméti, 11. évfolyamos versenyző Python nyelvű megoldását (i614.py) adjuk közre.


Statisztika:

10 dolgozat érkezett.
10 pontot kapott:Bátorfi Balázs, Farkas Roland, Gyönki Dominik, Nagy 292 Korina, Pál Benedek József , Puppi Barna, Szabó Imre Bence.
7 pontot kapott:1 versenyző.
Nem számítjuk a versenybe a születési dátum vagy a szülői nyilatkozat hiánya miatt:2 dolgozat.

A KöMaL 2024. januári informatika feladatai