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 2024. 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ő: 2024. november 15.. 24:00 (UTC+01:00).


I. 635. Kíváncsiak vagyunk arra, hogy az \(\displaystyle N\) jegyű pozitív egészek közül melyik szám esetében a legnagyobb az osztók összege. Például a kétjegyű számok esetében a 10 osztóinak összege 18, a 11 osztóinak összege 12 és így tovább. A kétjegyű pozitív egészek között a 96 az a szám, amely osztóinak összege a legnagyobb, ez az összeg 252.

Készítsünk programot i635 néven, amely bekéri a vizsgálandó pozitív egészek számjegyeinek \(\displaystyle N\) számát (\(\displaystyle 1\leq N\leq 5\)), majd megadja, hogy melyik szám esetében a legnagyobb az osztók összege és mekkora ez az összeg. Ha több ilyen szám van, akkor azok közül a legkisebbet adja meg a program.

A program standard bemenetének egyetlen sorában a számjegyek száma szerepel.

A standard kimenet egyetlen sorába a keresett szám és a szám osztóinak összege szerepeljen egy szóközzel elválasztva.

Példa bemenetKimenet
18 15

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

(10 pont)


I. 636. Néhány üvegházhatású gáz hazai kibocsátási adatait vizsgáljuk az 1985-től 2021-ig terjedő időszakban.

  1. Nyissunk egy üres táblázatkezelő munkafüzetet.
  2. Töltsük be egy üres munkalapra az A1 cellától kezdve az UTF-8 kódolású, tabulátorokkal tagolt uveg.txt fájl tartalmát. Munkánkat mentsük uveghaz néven a táblázatkezelő alapértelmezett formátumában.
  3. Formázzuk meg az adatokat a minta és a leírás szerint:
    1. egyesítsük az A1:AM1 cellatartományt;
    2. szélesítsük ki annyira az oszlopokat, hogy minden adat látható legyen;
    3. szegélyezzük az A1:AM1 és az A2:AO22 cellatartomány adatokat vagy képleteket tartalmazó celláit;
    4. az első sor betűmérete legyen 18 pontos, a betűk félkövérek és a cella balra igazított;
    5. a második sor szövege is legyen félkövér és középre igazított;
    6. az 1. és 2. sor, illetve az A3:B18 tartomány adatot tartalmazó cellái kapjanak a minta szerinti háttérszínt;
    7. a 19., a 20. és a 21. sorban egyesítsük az A és B oszlopokat, tartalmukat igazítsuk jobbra;
    8. a C21:E21 tartomány csak külső szegélyt kapjon.
  4. Készítsünk a Szén-dioxid nevű, diagram típusú munkalapra halmozott oszlopdiagramot a minta szerint a szén-dioxid kibocsátás részleteiről.
  5. A továbbiakban az eredeti munkalapon minden számított adat legyen középre igazítva.
  6. Számítsuk ki a C19:AM19 tartományban minden évre az összes kibocsátást.
  7. D20:AM20 tartomány celláiba kerüljön „+'' jel, ha az adott évi összes kibocsátás meghaladta az előző évit.
  8. Az AN3:AN18 cellába kerüljön az az évszám, amikor az adott kibocsátási mód a legnagyobb értékű volt, az AO3:AO18 tartomány cellái maradjanak üresek, ha a tőlük balra álló cellában 1985 szerepel. Egyébként, ha az 1985-ös év adata nagyobb, mint a 2021-es évé, akkor az „Igen'', máskülönben a „Nem'' szó jelenjen meg.
  9. Az ENSZ 1992-es, Rio de Janeiro-i konferenciáján elfogadott – az emberiség katalizálta éghajlatváltozás miatti – jegyzőkönyvet 1997-ben Kiotóban ratifikálták. Ebben arra kérték az országokat, hogy 2008–2012 között csökkentsék az üvegházhatású gázok kibocsátását az 1990-es szint 5,2%-ával. A szerződést később a katari Dohában meghosszabbították 2020-ig. Magyarország azt vállalta, hogy az 1985–1987 évek kibocsátási átlagát csökkenti 6%-kal. Számítsuk ki az átlagot, csökkentsük 6%-kal, és egészre kerekítve jelenítsük meg a D21-es cellában. A Z21:AL21 tartomány celláiba kerüljön „T'' betű, ha az adott évben teljesült a célkitűzés, különben az adott cella maradjon üres.
  10. Készítsünk a Kiotó-Doha nevű, diagram típusú munkalapra oszlopdiagramot a minta szerint az éves kibocsátásokról, jelenítsük meg vonalként a Kiotó-Doha küszöböt.

Segédszámításokat az AP oszloptól jobbra, illetve a 23. sortól lefelé végezhetünk. A megoldásban saját függvény vagy makró nem használható.

Diagram minták

Beküldendő egy tömörített i636.zip állományban a táblázatkezelő munkafüzet, illetve egy rövid dokumentáció, amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziószáma.

Az adatok forrása: https://www.ksh.hu/stadat_files/kor/hu/kor0017.html

Letölthető fájl: uveg.txt.

(10 pont)


I. 637. A számítógépes hálózatok fejlesztésének hőskorában különféle eljárásokat találtak ki a gépek közötti kommunikáció megvalósítására. Az egyik ilyen technológia logikailag kör alakban egymáshoz kapcsolt számítógépek közötti adatátvitelt valósít meg. A kört gyűrűnek is hívják, a technológia neve Token Ring, elterjesztője az 1980-as évektől az IBM volt.

Tekintsük úgy, hogy a számítógépek kör alakban vannak elrendezve és egy közös adatátviteli vonalra csatlakoznak. Ezen a vonalon halad egy irányba körbe egy speciális jel, a token, illetve mögötte az adatok. Ha nincs a vonalon adat, tehát egyik gép sem küld a másiknak, akkor csak a token utazik körbe. Ha van adat, akkor az a token mögött van és tartalmazza az adatot küldő és fogadó számítógép címét is.

A számítógépek a vonalat figyelik, és ha elér egy géphez a token, akkor a következők egyike történik:

  • Ha a token 0 értékű és nincs mögötte adat, akkor a vonalon éppen nem történik adatküldés. Ha a gép küldeni akar adatot, akkor megteheti: a tokent 1-re állítja, és elhelyezi mögötte a vonalon az adatot a küldő és fogadó gép címével együtt. Ha nem akar küldeni, akkor csak továbbküldi a 0 értékű tokent a körben következő gépnek.
  • Ha a token 1 értékű és van mögötte adat, akkor a gép megvizsgálja, hogy ki az adat címzettje. Ha ő a címzett, akkor kiolvassa az adatot, majd továbbküldi a tokent 0 értékkel és magát az adatot is. Ha nem ő a címzett, akkor továbbküldi a kapott tokent 1-es értékkel és az adatot is.
  • Ha a token 0 értékű és van mögötte adat, akkor a gép megvizsgálja, hogy ő volt-e az adat feladója. Amennyiben ő volt, akkor törli az adatot és továbbküldi a tokent 0 értékkel. Ha nem ő volt a feladó, akkor továbbküldi az adatot és a tokent 0 értékkel.

A gépek ilyen szabályok szerinti működése biztosítja, hogy a hálózaton mindig csak egy adat legyen, és ne történhessen meg, hogy két gép egyszerre küld adatot, mert ekkor a vonalon lévő elektromos jelek értelmezhetetlenné válnának. Ezt a jelenséget ütközésnek nevezik, amelyet a Token Ring technológiával így el lehet kerülni. A ma legelterjedtebb Ethernet technológia másként oldja meg az ütközés problémáját.

A Token Ring működésének hatékonysága függ attól, hogy hány számítógép van a körben, illetve ezek a gépek mekkora valószínűséggel kívánnak adatokat küldeni. Készítsünk számítógépes programot és modellezzük a hálózat működését: vizsgáljuk meg, hogy átlagosan mennyi időbe telik egy adatcsomag átvitele két gép között. A modellezés során feltételezzük, hogy a token és az adat egyik géptől a mellette lévő másik gépig egy időegység alatt ér át. A számítógépek a modellben elhanyagolható idő alatt végzik a tevékenységüket, tehát a \(\displaystyle t\)-edik időegységben fogadott tokent és adatot a \(\displaystyle (t+1)\)-edik időegységben küldik tovább.

A szimuláció során minden gép, amely éppen nem kíván adatot küldeni egy véletlenszámtól függően eldönti, hogy a következő időegységtől kezdve küld-e adatot, vagy sem. Az adatküldésre való hajlandóságot egy \(\displaystyle H\) véletlenszámmal adjuk meg. Ha egy gép egyszer úgy döntött, hogy küldeni szeretne, akkor egészen addig ebben az állapotában marad, amíg az adat elküldése és annak nyugtázása meg nem történik. Ez a Token Ring esetében akkor következik be, amikor egy 0 értékű token mögött olyan adatot olvas a gép a vonalról, amelynek ő a feladója.

Példaként egy 10 gépből álló hálózatban az egyik gép adatot akar küldeni egy tőle 4 egységre lévő másik géphez. Az adatküldés igényétől kezdve példaként még várnia kell 15 időegységet, hogy elérjen hozzá a 0 értékű token adatok nélkül. Ekkor feladja az adatot és 1-re állítja a tokent, amely 4 időegység múlva megérkezik a fogadóhoz. A fogadó beolvassa a számára küldött adatot, majd 0 tokennel továbbítja azt. A token és az adat 6 időegység után visszaérkezik a feladó géphez, amely nyugtázza a sikeres adatküldést, ami így \(\displaystyle 15+4+6\) időegységig tartott.

A program standard bemenetének egyetlen sorában a gépek \(\displaystyle N\) száma (\(\displaystyle {2\leq N\leq 255}\)), a gépek adatküldését jellemző H valószínűség (\(\displaystyle 0\leq H< 1\)), valamint a szimuláció teljes idejét időegységben megadó \(\displaystyle T\) érték (\(\displaystyle 1000\leq T <100\,000\)) található egy-egy szóközzel elválasztva.

A program a standard kimenetre egy egész és egy valós számot írjon szóközzel elválasztva: mennyi adatot sikerült a szimuláció során átjuttatni a hálózaton, illetve átlagosan mennyi idő telt el egy-egy adat esetén a küldési hajlandóságtól az adatküldés nyugtázásáig.

Példák:

BemenetKimenet
10 0.001 2000 18 17.8
10 0.002 2000 36 16.3
10 0.01 2000 148 37.8
10 0.02 2000 175 60.1
20 0.02 10000 475 363.1
25 0.05 10000 384 612.0

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

(10 pont)


I. 638.http://www.balatonihajok.hu portálról sok olyan balatoni hajózásra jellemző adatot ismerhetünk meg, amely történetileg és a jelenben érdekes lehet.

A rendelkezésre álló és letölthető adatbázisban a különböző korú, típusú, funkciójú és tulajdonosú hajókkal foglalkozunk, ezek adatai állnak rendelkezésre.

Az adatbázis a következő táblákat tartalmazza:

Táblák

A következő feladatokat megoldó SQL parancsokat rögzítsük a bh_megoldas.sql nevű állományban a feladatok végén zárójelben megadott névvel. A javítás során csak ennek az állománynak 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. A feladat megoldásához a digitális kultúra emelt szintű érettségin használható XAMPP használatát javasoljuk.

  1. A hajolista.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 a lokális SQL szerveren a hajolista.sql parancsfájlt.
  2. Készítsünk lekérdezést, amely ábécérendben jeleníti meg a jelenleg is üzemelő vitorlások nevét. (2vitorlas)
  3. Lekérdezés segítségével írassuk ki azoknak a hajóknak a nevét és tulajdonosait, amelyek jelenlegi neve tartalmazza a „Balaton'' szórészletet. (3balaton)
  4. Készítsünk lekérdezést, amely az „Angolna'' nevű hajó tulajdonosának birtokában lévő hajók nevét és típusát kilistázza. (4angolna)
  5. Készítsünk lekérdezést, amely meghatározza, hogy a „Balatoni Hajózási Zrt.'' az összes hajó hány százalékának tulajdonosa. (5bahart)
  6. Lekérdezés segítségével határozzuk meg azoknak a tulajdonosoknak a nevét és székhelyét, akik személyhajóval nem, de uszállyal rendelkeznek. A listában minden tulajdonosnév egyszer jelenjen meg. (6uszaly)
  7. Lekérdezés segítségével írassuk ki a legtöbb névváltoztatáson átesett hajók jelenlegi nevét és tulajdonosait. (7soknev)
  8. Lekérdezés segítségével adjuk meg azoknak a tulajdonosoknak a nevét, akik személyhajóval nem rendelkeznek. A listában a tulajdonosok neve ábécé sorrendben, ismétlődés nélkül jelenjen meg. (8nevek)
  9. Készítsünk lekérdezést, amely megadja, hogy típusonként hány hajó nem üzemel jelenleg. A listában a típus neve és a darabszám jelenjen meg – az utóbbi szerint csökkenően rendezve. (9tipus)

Letölthető állomány: hajolista.sql.

(10 pont)


Figyelem!

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