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 2025. novemberi 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ő: 2025. december 15.. 24:00 (UTC+01:00).


I. 675. Négyzethálóba rendezett, négyzetekből álló és kevés színt tartalmazó SVG típusú vektorgrafikus ábrákat a színeket jelölő karakterek felsorolásával, tömörítve tárolhatunk. A négyzetek azonos méretűek, szorosan illeszkednek, nem fedik át egymást és oldalaik párhuzamosak a kép szélével.

Készítsünk programot i675 néven, amely előállítja az SVG típusú vektorgrafikus ábrának a színek betűjével jelölt szöveges kódját.

A színeket jelölő nagybetűk: F fehér, P piros, K kék, Z zöld, S sárga, N narancs, L lila, B fekete.

A program standard bemenetének az SVG állomány nevét adjuk meg.

A standard kimenetre írjuk ki az ábra szöveges kódját.

Az SVG állomány szerkezetéről többek között a http://svg.elte.hu/ címen olvashatunk.

Beküldendő egy tömörített i675.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ó.

Letölthető minta bemenet: z1.svg

(10 pont)


I. 676. Tekintsük az 1, 2, 3, 4, 5 és 6 számjegyek permutációit. Ha az adott permutációnak – például 6, 1, 5, 3, 4, 2 – a számjegyeit egymás után írjuk, hatjegyű számot kapunk, – az előző példánál ez \(\displaystyle 615\,342\).

  1. Nyissunk meg egy üres táblázatkezelő munkafüzetet, és mentsük el specpermhat néven a táblázatkezelő alapértelmezett formátumában.
  2. Határozzuk meg az 1, 2, 3, 4, 5 és 6 számjegyek összes olyan permutációját, illetve az ezekből a fenti módon képzett hatjegyű számokat, amelyek eleget tesznek az alábbi követelményeknek:

  3. Az A oszlopba, amelyek 2-vel oszthatók.
  4. A B oszlopba, amelyek 3-mal oszthatók.
  5. A C oszlopba, amelyek 4-gyel oszthatók.
  6. A D oszlopba, amelyek 5-tel oszthatók.
  7. Az E oszlopba, amelyek 6-tal oszthatók.
  8. Az F oszlopba, amelyeknél az első és utolsó számjegy összege kétjegyű.
  9. A G oszlopba, amelyeknél az utolsó három számjegy összege 10.
  10. A H oszlopba, amelyeknél az utolsó két számjegyből képzett szám prím.
  11. Az I oszlopba, amelyeknél az utolsó három számjegyből képzett szám prím.

Az egyes oszlopokban a számok növekvő sorrendben jelenjenek meg. Segédszámításokat a J oszloptól jobbra vagy egy újonnan felvett munkalapon lehet végezni. A megoldásban saját függvény vagy makró nem használható.

Beküldendő egy tömörített i676.zip állományban a specpermhat néven mentett táblázatkezelő munkafüzet és egy rövid dokumentáció, amelyben szerepel az összes, a megoldásnál bevetett furfang magyarázata, a táblázatkezelő neve, verziószáma.

(10 pont)


I. 677. Magyar találmányok, technikai alkotások neveinek gyűjteménye és a feltalálók néhány adata áll rendelkezésünkre egy adatbázisban. A találmányok és a feltalálók között N:M (több a többhöz) kapcsolat van, ezt egy kapcsolótábla használatával oldjuk fel.

Csak akkor szerepel egy találmány azonosítója a kapcsol táblában, ha a feltaláló neve ismert.

A következő feladatokat megoldó SQL-parancsokat rögzítsük a feladatok végén zárójelben megadott nevű és .sql kiterjesztésű szöveges állományban! Például a 3. feladat megoldását a 3bay.sql nevű állományban. Az értékelés során csak ezeknek az állományoknak a tartalma lesz értékelve. Ügyeljünk arra, hogy a lekérdezésekben pontosan a kívánt mezők szerepeljenek, felesleges mezőt ne jelenítsünk meg.

  1. A feltalalok.sql állomány tartalmazza az adatbázist és a táblákat létrehozó, valamint az adatokat a táblába beszúró SQL-parancsokat. Futtassuk az SQL-szerveren a feltalalok.sql parancsfájlt.
  2. Listázzuk ki ábécérendben lekérdezés segítségével azoknak a találmányoknak a nevét és feltalálójuknak a nevét, amelyek nevében szerepel az ,,optika'' szó. (2optika)
  3. Lekérdezéssel írassuk ki Bay Zoltán találmányainak nevét. (3bay)
  4. Adjuk meg lekérdezés segítségével, hogy melyik találmányhoz fűződik a legtöbb kutató és az mennyi. (4tobben)
  5. Soroljuk fel lekérdezés alkalmazásával azoknak a kutatóknak a nevét, akiknek se a születési, se a halálozási évszáma nincs megadva az adatbázisban. (5hiany)
  6. Lekérdezéssel listázzuk ki azokat a kutatókat és találmányaik nevét, akiknek a vezetékneve szerepel a találmány nevében. (6nevado)
  7. Milyen találmányaik voltak azoknak a kutatóknak, akik a XIX. század második felében (1851 és 1900 között, a határokat is beleszámolva) is éltek? A kutatók és a találmányok nevét adjuk meg lekérdezés használatával. (7felszazad)
  8. Soroljuk fel lekérdezés alkalmazásával azoknak a kutatóknak a nevét és a találmányaik számát, akik Bay Zoltánnál több kutatási eredménnyel szerepelnek az adatbázisban. (8kutszam)
  9. Adjuk meg lekérdezés segítségével, hogy a ,,porlasztó'' feltalálóinak – a porlasztón kívül – milyen más találmányai vannak az adatbázisban. Minden találmány neve egyszer szerepeljen a listában. (9porlaszto)

Beküldendők egy i677.zip tömörített állományban a lekérdezések.

Letölthető fájl: feltalalok.sql

(10 pont)


I. 678. Egy elektronikus reklámokkal foglalkozó cég címlistájában egyéni e-mail címek és csoportok e-mail címei szerepelnek. Minden csoportban van legalább egy másik csoport vagy egy személy e-mail címe. Egy e-mail cím többször is előfordulhat úgy, hogy több csoportnak is tagja az adott személy vagy csoport.

A címlistát egy szöveges állományban tárolja a cég. Az állomány minden sora egy e-mail címmel kezdődik. Ha csak ez a cím áll a sorban, akkor az egy egyéni e-mail cím. Ha a cím után további címek következnek, akkor az azt jelöli, hogy a sor első címe egy csoport e-mail címe, a csoport tagjainak e-mail címei a sorban utána következnek. A címeket egy-egy szóköz választja el egymástól.

Példaként tekintsük a következő címlistát:

felso@alma.hu peter@alma.hu zsolt.kovacs@alma.hu
also@alma.hu andras.kovacs@bp.hu felso@alma.hu peter@alma.hu
kozepso@alma.hu peter@alma.hu also@korte.hu nagy.balint@bp.hu
balazs.kiss@alma.hu
also@korte.hu jozsef.kiss@korte.hu jozsef.nagy@bp.hu
felso@korte.hu kiss.jeno@bp.hu kozep@korte.hu
kozep@korte.hu nagy.balint@bp.hu felso@korte.hu

A címekben csak az angol ábécé kisbetűi, valamint a pont és @ jel szerepelnek. Előfordul, hogy egy egyedi név megjelenik a címlistában egy külön sorban, de előfordul az is, hogy csak valamely csoport tagjaként szerepel.

A cég úgy dönt, hogy meghívja a címlistán szereplő személyek egy részét egy találkozóra. Ehhez egy e-mailt küldenek ki, amelyben megadják a címzetteket. A címlista alapján azonban elég nehéz megmondani, hogy valójában hány személy fogja megkapni a levelet. Segítsünk a cégnek, és állapítsuk meg a címzett személyek számát.

Készítsünk programot, amely a címlista és a küldendő e-mail címzettjeinek felhasználásával megadja, hogy a levél hány személynek szól. A program olvassa be a – honlapunkról letölthető – mellékelt cimlista.txt állományt, majd a standard bemeneten megadott címzetteket, és írja ki a standard kimenetre a címzett személyek számát.

Példa, amelyben a címlista a fenti példában lévő lista:

Bemenet: Kimenet
felso@korte.hu kozepso@alma.hu 5

A programnak tetszőleges, legföljebb 100 sort tartalmazó címlista állomány mellett is működnie kell. A címlista állomány egy sorában legföljebb 30 cím szerepel.

Beküldendő egy tömörített i678.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ó.

Letölthető állomány: cimlista.txt

(10 pont)


Figyelem!

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