A KöMaL 2023. 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ű feladatokA beküldési határidő 2023. november 15-én LEJÁRT. |
I. 599. Egy számsorozatot akkor nevezzünk Fibonacci-típusúnak, ha a harmadiktól kezdve mindegyik eleme az előző kettő összege. A sorozat legismertebb formája, ha az első két szám 0 és 1.
A sorozatot rekurzióval definiáljuk, amit iteratív módon is könnyen kódolni tudunk.
$$\begin{align*} \tag{1} F_{0}& = 0, \qquad F_{1} = 1;\\\tag{2} F_{n+1} & = F_{n-1} + F_{n} \quad (n\ge 1). \end{align*}$$
A sorozat elemei gyorsan növekednek. Változtassuk meg a 2. képletet.
\(\displaystyle \tag{3} F_{n+1} = (F_{n-1} + F_{n}) \mod m \quad (n\ge 1). \)
A képletben szereplő \(\displaystyle m\) (\(\displaystyle m> 1\)) egész szám, amellyel a sorozat új elemét maradékosan osztjuk. A sorozat periodikus, előbb-utóbb újra szerepel benne 0 és 1, így ismétlődni kezdenek az értékek.
Készítsünk programot, amely \(\displaystyle m\) értékét beolvassa és a képernyőre kiírja a periódus hosszát, valamint egy új sorba a periódus elemeit.
Beküldendő egy tömörített i599.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. 600. Egy asztalon egyforma méretű korongok találhatók, mely(ek)re számokat írtak 1-től 25-ig. Mindegyik szám csak egyszer szerepel egy korongon, tehát 25 korong van. A korongok egymásra helyezhetők, de csak akkor, ha a feljebb lévő korong száma osztója az alatta lévő korong számának. Például építhető a korongokból egy 4 magasságú oszlop, ha a korongok száma 1, 3, 12, 24.
Valaki épített már néhány oszlopot az asztalon lévő korongokból, de egyelőre elakadt az építkezésben. Készítsünk programot, amely az asztalon látható oszlopok ismeretében segít a további korongokat a korábbi oszlopokba elhelyezni.
A program először kérje be az eddigi oszlopok \(\displaystyle N\) számát, majd kérje be az \(\displaystyle N\) darab oszlopban található számokat egy oszlopon belül felülről lefelé haladva. Ezután írja ki a még szabadon lévő korongok számát növekvő sorrendben, valamint azon szabadon lévő korongokon lévő számokat, amely korongokat nem lehet az eddigi oszlopok egyikéhez sem hozzátenni.
Egy lehetséges kommunikáció a felhasználóval:
Beküldendő egy tömörített i600.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. 601. 1777-ben George Louis Leclerc, Buffon grófja vetette fel a ,,tűprobléma'' néven ismert feladatot: Mekkora a valószínűsége annak, hogy \(\displaystyle k\) hosszúságú tűt dobva a \(\displaystyle d\) szélességű lapokból álló padlóra, a leeső tű metszi a padlólapok közti egyik vonalat?
Nézzük ennek a matematikai megközelítését!
Jelölje \(\displaystyle x\) a tű középpontjának a legközelebbi vonaltól mért távolságát \(\displaystyle \left(0 \le x \le \frac{d}{2}\right)\).
Legyen a tű és a padló vonalainak szöge \(\displaystyle \alpha\) \(\displaystyle (0^\circ \le \alpha < 180^\circ)\).
Ekkor a tű vége \(\displaystyle y\) értékkel kerül magasabbra a tű középpontjánál \(\displaystyle \bigg(\sin \alpha = \frac{y}{\frac{k}{2}}\), vagyis \(\displaystyle y = \frac{k}{2} \cdot \sin\alpha\bigg)\). Ha \(\displaystyle y < x\), akkor nem metszi a tű a vonalat.
Annak az esélye, hogy metszi a tű a padlóvonalat: \(\displaystyle p = \frac{2}{\pi} \cdot \frac{k}{d}\), ezért a kísérlet a \(\displaystyle \pi\) meghatározására is használható.
Az előző képletből \(\displaystyle \pi\)-t kifejezve: \(\displaystyle \pi = \frac{2k}{pd}\).
Szimuláljuk a kísérletet számítógéppel. Hat különböző \(\displaystyle k\) és \(\displaystyle d\) értékre végeztessünk a táblázatkezelővel \(\displaystyle 10\,000\,--\,10\,000\) dobáskísérletet, majd mindegyiknél határozzuk meg a \(\displaystyle p\) relatív gyakoriságát. Ezekből kapunk hat becslést a \(\displaystyle \pi\) értékére, majd ezeket átlagoljuk.
1. Nyissunk meg egy üres táblázatkezelő munkafüzetet, majd mentsük buffontu néven.
2. Hozzuk létre és formázzuk a minták szerinti elrendezést.
3. Gépeljük be a szöveges adatokat az A1:A4 és a B5:S5 tartományokba, alkalmazzunk ezekre a cellákra félkövér betűstílust. Az A6:A1005 tartományba kerüljenek az \(\displaystyle 1, 2, \ldots, 999, 1000\) értékek. A C, az F, az I, az L, az O és az R oszlopok első két sorába gépeljük be a mintákon látható, \(\displaystyle k\) és \(\displaystyle d\) aktuális értékére vonatkozó adatokat.
4. Szegélyezzük a táblázat celláit a minta szerint, a rácsozás az 1005. sorig tartson.
5. A B, az E, a H, a K, az N és a P oszlopok 6\(\displaystyle \,\)–\(\displaystyle \,\)1005. sorába kerüljön olyan képlet, amely a véletlenszám generátor segítségével megad egy 0 és \(\displaystyle \frac{d}{2}\) közötti értéket. Az adat négy tizedesjegy pontossággal jelenjen meg.
6. A C, az F, az I, az L, az O és az R oszlopok 6\(\displaystyle \,\)–\(\displaystyle \,\)1005. sorába kerüljön olyan képlet, amely véletlenszám generátor segítségével megad egy \(\displaystyle 0^\circ\) és \(\displaystyle 180^\circ\) közötti szögértéket. Az adat két tizedesjegy pontossággal jelenjen meg.
7. A D, a G, a J, az M, a P és az S oszlopok 6\(\displaystyle \,\)–\(\displaystyle \,\)1005. sorába kerüljön 0, ha a tű nem metszi a vonalat, vagyis \(\displaystyle y < x\); ellenkező esetben a cella értéke legyen 1.
8. A C3, az F3, az I3, az L3, az O3 és az R3 cellákban szerepeljen olyan képlet, amely megadja a ,,metszés'' adott tesztben mért relatív gyakoriságát \(\displaystyle \left(\frac{\text{jó esetek száma}}{\text{kísérletek száma}}\right)\).
9. A C4, az F4, az I4, az L4, az O4 és az R4 cellákban az a képlet szerepeljen, amely megadja a \(\displaystyle \pi\) értékére kapott becslést az adott tesztben.
10. Végül átlagoljuk ezek értékét a T4 cellában. Állítsuk be a cella jellemzőit a mintán láthatóra.
Segédszámításokat az U oszloptól jobbra végezhetünk. A megoldásban saját függvény vagy makró nem használható.
Beküldendő egy tömörített i601.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.
(10 pont)
I. 602. Az európai Az év autója szavazást 1964 óta tartják meg minden évben a bemutatott új autókról. A jelölésben és a szavazásban autós magazinok szakújságírói vesznek részt.
A rendelkezésre álló és letölthető adatbázisban az 1964\(\displaystyle \,\)–\(\displaystyle \,\)2023 időszak első három helyezettjének adatai állnak rendelkezésre.
Az adatbázis a következő táblát tartalmazza:
Táblák:
A következő feladatokat megoldó SQL parancsokat rögzítsük az evautoja_lekerdezesek.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. Az evautoja.sql állomány tartalmazza az adatbázist és a táblát létrehozó, valamint az adatokat a táblába beszúró SQL parancsokat! Futtassuk a lokális SQL szerveren az evautoja.sql parancsfájlt.
2. Készítsünk listát lekérdezés segítségével azokról az autókról (ev, gyar, modell, pont), amelyek 200 pontnál többel lettek harmadik helyezettek. (2harmadik)
3. A díjazott autók gyárai között 4 japán van: a Honda, a Mazda, a Nissan és a Toyota. Listázzuk ki az összes modelljüket (ev, gyar, modell, helyezes) helyezés szerinti sorrendben. (3japan)
4. Adjuk meg lekérdezés segítségével, hogy melyek azok a gyárak, amelyek csak egyszer szerepelnek a táblában. (4Egyszer)
5. Adjuk meg lekérdezés segítségével, hogy melyik az első három autógyár, amelyik legtöbbször volt a valamelyik modelljével első helyezett. (5Elsok)
6. Írassuk ki lekérdezés segítségével, hogy mely években nyerte díjait az az autó, amely legtöbbször szerepelt a díjazottak között. (6Evek)
7. A Fiesta nevű autó gyártójának milyen más modellje van még a táblázatban? Jelenítsük meg a gyár és a modellek nevét (mindegyiket egyszer). (7Fiesta)
8. Melyek azok az autómodellek, amelyek első és második díjat is nyertek? Adjuk meg lekérdezés segítségével a gyártó, valamint a modell nevét és a díjak évét. (8Elsomasodik)
9. Adjuk meg azokat az éveket és autóknak az adatait, amikor az első és második helyezett pontszáma legfeljebb 5 ponttal tért el. (9Szorosnyeres)
10. Készítsük el lekérdezés segítségével gyáranként az éremtáblázatot (gyáranként az első, a második és a harmadik helyezések száma) a nevük szerinti sorrendben, a mintához hasonlóan. (10Eremtabla)
Beküldendő egy tömörített i602.zip állományban az evautoja_lekerdezesek.sql nevű állomány, amely a feladatok megoldását tartalmazza.
Letölthető állomány: evautoja.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.