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 2023. májusi 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ő 2023. június 15-én LEJÁRT.


I. 592. Egy gyöngysorba különböző színű gyöngyöket fűztek fel. A golyók egyszínűek és színüket az angol ábécé egy-egy nagybetűjével adjuk meg. Készítsünk programot i592 néven, amely megadja a gyöngysor leghosszabb olyan szakaszának hosszát, amelyben csak kétféle színű gyöngy van.

A program standard bemenetének első sorában a gyöngysor elemszáma van \(\displaystyle N\) (\(\displaystyle 1\le N\le 1000\)). Az ezt követő sorban a gyöngyök színeit jelölő nagybetűk vannak szóközzel elválasztva.

A program a standard kimenetre írja ki a leghosszabb gyöngysorrészlet hosszát, amely kétféle színt tartalmaz.

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

statisztika


I. 593. (É). Rendelkezésünkre áll a meteo.txt (tabulátorokkal tagolt, UTF-8 kódolású) szövegfájlban a Budapesten 1900. és 2020. között mért néhány meteorológiai adat havi bontásban. Ennek segítségével készítünk a feladatban statisztikát:

1. A táblázatkezelő egy üres munkafüzetében nevezzük át meteo nevűre a munkalapot. Importáljuk ebbe a munkalapba az A1-es cellától kezdve a meteo.txt fájl tartalmát. Munkánkat i593 néven mentsük el a táblázatkezelő alapértelmezett formátumában.

2. Végezzük el az alábbi formázásokat:

\(\displaystyle a.\) A munkalap betűtípusa legyen Verdana, betűmérete 12 pont.

\(\displaystyle b.\) Az első sor feliratai legyenek a minta szerintiek, a sormagasság beállításával érjük el, hogy a feliratok hossza ne haladja meg a két sornyit.

\(\displaystyle c.\) Az oszlopszélességek legyenek optimálisak úgy, hogy minden cella tartalma olvasható legyen.

3. Feltételes formázással állítsuk be, hogy a páratlan évek adatainak cellái kapjanak #E2EFDA színkódú háttérszínt.

4. Az AE oszlopban, minden év decemberének sorában, számoljuk ki az adott év összes csapadékmennyiségét. Itt és az 5–6. feladatnál is a többi hónap sorában az adott oszlopban ne jelenjen meg adat.

5. Az AF oszlopban, minden év decemberének sorában számoljuk ki az adott év havi középhőmérsékleteinek átlagát.

6. Az AG oszlopban minden év decemberének sorába kerüljön a Forró szó, ha abban az évben volt forró nap (forró nap: amikor a maximumhőmérséklet \(\displaystyle \ge 35\;{}^\circ\)C), különben a cella jelenjen meg üresen.

7. Határozzuk meg a szélsőségeket, azaz kerüljön a H1442:I1442, az N1442:O1442 és a V1442:W1442 cellapárokba a mért időszakban feljegyzett legalacsonyabb napi hőmérséklet értéke és dátuma, a legmagasabb napi hőmérséklet értéke és dátuma, továbbá a legcsapadékosabb nap csapadékmennyisége és dátuma.

8. Másoljuk le a hónapneveket a B1444:B1455 tartományba, és számítsuk ki a U1444:U1455 tartomány celláiban az adott hónapban az évente mért csapadékmennyiség összegét.

9. Jelenítsük meg a B1457 cellában a legcsapadékosabb hónap nevét.

10. Készítsünk vonaldiagramot az 1915, 1965 és 2015 évi havonta mért átlaghőmérsékletekről új munkalapra. A diagramhoz tartozzon egy alul elhelyezkedő jelmagyarázat, címe: A havi középhőmérséklet ötven évente legyen.

A megoldásban saját függvény vagy makró nem használható.

Beküldendő egy tömörített i593.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.met.hu/eghajlat/magyarorszag_eghajlata/eghajlati_adatsorok.

Minták:

A megoldáshoz szükséges letölthető állomány: meteo.txt.

(10 pont)

megoldás, statisztika


I. 594. Az OpenAI által készített ChatGPT segítségével az I. 591. feladatban ADA programot készítettünk az I. 589. feladat megoldására.

Készítsünk programot ugyanennek a problémának a megoldására i594 néven az általunk választott programozási nyelven, felhasználva a ChatGPT javaslatait. A javasolt algoritmus, illetve programkód részleteket elfogadhatjuk, vagy a feltételeket megváltoztatva új változatot kérhetünk, illetve módosíthatjuk, de ezeket a lépéseket a dokumentációban adjuk meg.

A megoldandó probléma leírását megismételjük: egy számjegysorozatot állítunk elő a következő leírás szerint, majd ennek átlagát, móduszát és mediánját kiíratjuk.

A feladat a középszintű digitális kultúra érettségi gyakorlati feladatsorainak programozási feladataihoz annyiban hasonlít, hogy nincs beolvasandó adatfájl, hanem a feldolgozandó sorozatot generálni kell, majd azt feldolgozni. A megoldás egyben kísérlet arra, hogy a ChatGPT mennyire segítené az érettségi feladat megoldását.

1. A program olvasson be egy időpontot óra, perc (\(\displaystyle 0\le \texttt{ora}\le 23\) és \(\displaystyle 0\le \texttt{perc}\le 59\)) formátumban és egy időtartamot (\(\displaystyle 1\le \texttt{delta}\le 1440\)) percben, majd az utóbbinak megfelelő számban, percenként az időpontokat állítsa elő.

Az időpontok meghatározásánál vegyük figyelembe, hogy az egész számok bevezető 0 számjegyeit elhagyjuk, nem tároljuk, ha azok nem szükségesek. A percenkénti időpontnövelésnél figyelembe vesszük az óra- és a napváltást is.

2. Minden időpont óra és perc értékét számjegyekké alakítva egy sorozatban tároljuk.

3. Írjuk ki a sorozatot úgy, hogy az adatok között ne legyen semmilyen elválasztójel.

4. Határozzuk meg és írjuk ki az így kapott sorozat számjegyeinek átlagát két tizedesjegy pontosan.

5. Számítsuk ki és írjuk ki a sorozat mediánját két tizedesjegy pontosan.

6. Írjuk ki a sorozat móduszát.

Minta a szöveges kimenet kialakításához:

Beküldendő egy tömörített i594.zip állományban a megoldást adó program forráskódja és egy szöveges dokumentáció, amely tartalmazza a megoldást és a ChatGPT-vel való kommunikáció leírását. A dokumentáció térjen ki arra, hogy a megoldás részletei miben térnek el a ChatGPT javaslataitól.

(10 pont)

megoldás, statisztika


I/S-jelű feladatok

A beküldési határidő 2023. június 15-én LEJÁRT.


I/S. 72. Egy levelibéka szeretne átjutni egy patak átellenes oldalára. A patak átellenes pontja, ahova a béka szeretne eljutni, \(\displaystyle M\) centiméterre van a béka jelenlegi pozíciójától. Szerencsére a patakon vízinövények élnek, melyekre ugorva könnyebb lehet az átkelés. A béka útjában összesen \(\displaystyle N\) számú vízinövény található (egyenes vonalban, a tó átellenes pontja felé), az \(\displaystyle i\)-edik vízinövény \(\displaystyle T[i]\) cm-re van a béka kiindulási helyétől.

A béka minden egyes másodpercben vagy szökken pontosan 1 cm-t (vagy a partra, vagy egy másik vízinövényre), vagy pedig ugrik legfeljebb \(\displaystyle D\) cm-t (vagy a partra, vagy egy másik vízinövényre). Az ugrás nagyon fárasztó, ezért minden ugrás után pihenésként szökkennie kell a békának (legalább egyszer).

Adjuk meg, hogy minimum mekkora \(\displaystyle D\) ugrásra kell képesnek lennie a békának, hogy át tudjon jutni a patak átellenes oldalára.

A bemenet első sorában az \(\displaystyle N\) és \(\displaystyle M\) számok találhatók szóközzel elválasztva: a vízinövények száma, és a patak szélessége. A második sor szóközzel elválasztva tartalmaz \(\displaystyle N\) szigorúan monoton növekvő sorrendben adott számot: az \(\displaystyle i\)-edik szám az \(\displaystyle i\)-edik növény \(\displaystyle T[i]\) távolsága a béka indulási helyétől.

A kimenet egyetlen sorában egy szám szerepeljen: a minimális \(\displaystyle D\) távolság, amivel a béka át tud jutni a túlpartra.

Minták:

Magyarázat: az első példában a béka ugrik az 1. növényre, aztán szökken a 2. növényre, aztán ugrik a túlpartra. A második példában a béka egyből átugrik a túlsó partra (nem tudja felhasználni a növényt, mivel nem tudna szökkenni ugrás után).

Korlátok: \(\displaystyle 1\le N, M \le 10^5\), \(\displaystyle 0 < T[i] < M\), \(\displaystyle T[~]\) szigorú monoton növekvő. Időkorlát: 0,4 mp.

Értékelés: a pontok 50%-a kapható, ha a program helyes kimenetet ad az \(\displaystyle N,M \le 100\) esetekben.

Beküldendő egy is72.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható. A dokumentáció tartalmazza a megoldás elméleti hátterét, az esetleg felhasznált forrásokat. Ne tartalmazzon kódrészleteket, azok magyarázata kódkommentek formájában a forrásprogramban szerepeljen.

(10 pont)

statisztika


S-jelű feladatok

A beküldési határidő 2023. június 15-én LEJÁRT.


S. 171. Jázmin készített egy listát a nyári programokról, amiken részt szeretne venni. Ismerjük továbbá minden program kezdetét és végét napokban és azt is, hogy az adott program mennyibe kerül. Jázmin nem tud egyszerre két programon ott lenni, pontosabban, ha egy program az \(\displaystyle i\)-edik napon befejeződik, akkor a következő program csak az \(\displaystyle i+1\)-edik napon kezdődhet. Jázmin úgy szeretné kiválasztani a programokat, hogy azok hossza összesen a lehető legnagyobb legyen, de az összköltségük ne lépjen át egy megadott \(\displaystyle K\) értéket. (Ha az esemény az \(\displaystyle i\)-edik napon kezdődik és a \(\displaystyle j\)-edik napon ér véget, akkor annak hossza \(\displaystyle (j-i+1)\) nap.)

A bemenet első sorában a programok \(\displaystyle N\) száma és a maximális összköltség, \(\displaystyle K\) szerepel. A következő \(\displaystyle N\) sorban az egyes programok adatai szerepelnek. Minden sorban szerepel a program elejének és végének időpontja napokban \(\displaystyle (e_i, v_i)\), majd a költsége, \(\displaystyle k_i\).

Kimenet: a kimenet első sorába a programok lehetséges legnagyobb összes hossza kerüljön. A második sorban adjuk meg a programok sorszámait, melyek összes hossza az előbb kiírt érték és teljesítik a feltételeket, azaz nem fedik át egymást és az összköltségük nem nagyobb, mint \(\displaystyle K\). A programokat a listában lévő sorrend szerint, 1-től indexeljük.

Minta:

Magyarázat: az első és a harmadik program összköltsége túl nagy, ezért a második programot választjuk.

Korlátok: \(\displaystyle 1\le N \le 10\,000\), \(\displaystyle 0\le e_i \le v_i \le 100\), \(\displaystyle 1 \le k_i \le 10\,000\) (\(\displaystyle i = 1\ldots N\)). Időkorlát: 1 mp.

Értékelés: a pontok 40%-a kapható, ha a program helyes kimenetet ad az \(\displaystyle {N\le 15}\) tesztesetekre.

Beküldendő egy s171.zip tömörített állományban a megfelelően dokumentált és kommentezett forrásprogram, amely tartalmazza a megoldás lépéseit, valamint megadja, hogy a program melyik fejlesztői környezetben futtatható. A dokumentáció tartalmazza a megoldás elméleti hátterét, az esetleg felhasznált forrásokat. Ne tartalmazzon kódrészleteket, azok magyarázata kódkommentek formájában a forrásprogramban szerepeljen.

(10 pont)

statisztika


Figyelem!

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