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


I. 547. A morzekód (Samuel Morse találmánya) olyan kommunikációs kód, amely pontok és vonalak kombinációjából áll. Szöveges üzenet átvitelére alkalmas vezetékes, vagy vezeték nélküli kommunikációs csatornán.

A kódrendszer rövid és hosszú jelekből, valamint szünetekből áll. A morzekóddal a magyar ábécé ékezetmentes betűi egyértelműen kódolhatók a következő táblázat alapján:

Betű Jel Betű Jel
A \(\displaystyle {{\cdot}\ {-}}\) N \(\displaystyle {{-}\ {\cdot}}\)
B \(\displaystyle {{-}\ {\cdot}\ {\cdot}\ {\cdot}}\) O \(\displaystyle {{-}\ {-}\ {-}}\)
C \(\displaystyle {{-}\ {\cdot}\ {-}\ {\cdot}}\) P \(\displaystyle {{\cdot}\ {-}\ {-}\ {\cdot}}\)
D \(\displaystyle {{-}\ {\cdot}\ {\cdot}}\) Q \(\displaystyle {{-}\ {-}\ {\cdot}\ {-}}\)
E \(\displaystyle {{\cdot}}\) R \(\displaystyle {{\cdot}\ {-}\ {\cdot}}\)
F \(\displaystyle {{\cdot}\ {\cdot}\ {-}\ {\cdot}}\) S \(\displaystyle {{\cdot}\ {\cdot}\ {\cdot}}\)
G \(\displaystyle {{-}\ {-}\ {\cdot}}\) T \(\displaystyle {{-}}\)
H \(\displaystyle {{\cdot}\ {\cdot}\ {\cdot}\ {\cdot}}\) U \(\displaystyle {{\cdot}\ {\cdot}\ {-}}\)
I \(\displaystyle {{\cdot}\ {\cdot}}\) V \(\displaystyle {{\cdot}\ {\cdot}\ {\cdot}\ {-}}\)
J \(\displaystyle {{\cdot}\ {-}\ {-}\ {-}}\) W \(\displaystyle {{\cdot}\ {-}\ {-}}\)
K \(\displaystyle {{-}\ {\cdot}\ {-}}\) X \(\displaystyle {{-}\ {\cdot}\ {\cdot}\ {-}}\)
L \(\displaystyle {{\cdot}\ {-}\ {\cdot}\ {\cdot}}\) Y \(\displaystyle {{-}\ {\cdot}\ {-}\ {-}}\)
M \(\displaystyle {{-}\ {-}}\) Z \(\displaystyle {{-}\ {-}\ {\cdot}\ {\cdot}}\)

Készítsünk programot i547 néven, amely morzekóddal megadott üzenetet dekódol és a képernyőn megjelenít. Az üzenet legfeljebb 1000 jelből áll.

A jeleket, betűket, szavakat és mondatokat megadott számú szóközök választják el:

Jel Kód
Rövid jel \(\displaystyle {\cdot}\) (pont)
Hosszú jel - (kötőjel)
Jelköz _ (1 szóköz)
Betűköz ___ (3 szóköz)
Szó és mondatköz _______ (7 szóköz)

A program olvassa be a standard input egyetlen sorából az üzenet morzekódját. Írja a standard output egyetlen sorába a dekódolt, megfelelően tagolt üzenetet.

Beküldendő egy tömörített i547.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. 548. (É). Egy webáruház termékeit a vásárlók az ország különböző pontjain elhelyezkedő csomagátvevő helyeken kapják meg. A vállalat több raktárból szállítja ki a csomagátvevő helyekre a termékeket. A csomagok eljuttatását a raktárból a csomagátvevő helyekre kisebb szállítóvállalatok segítségével oldják meg.

A szallit.txt állományban rendelkezésre állnak az elmúlt hónapban történt kiszállítások adatai: a raktár és a csomagátvevő hely sorszáma, a szállító cég neve és a szállítási díj. Válaszoljunk a kérdésekre és oldjuk meg a feladatokat táblázatkezelő program segítségével. A feladat mintája a borítón található.

1. Töltsük be a tabulátorokkal tagolt, UTF-8 kódolású szallit.txt szövegfájlt a táblázatkezelő egy munkalapjára az A1-es cellától kezdődően. Mentsük a táblázatot i548 néven a táblázatkezelő alapértelmezett formátumában.

2. Gyűjtsük ki a szállítók nevét a G oszlopban a mintának megfelelően. Minden szállító pontosan egyszer szerepeljen a  táblázatrészben.

3. Adjuk meg a H oszlopban a szállítók nevei mellett, hogy hány alkalommal végeztek szállítást az elmúlt hónapban. Egy másolható képlettel dolgozzunk minden szállító esetében.

4. Adjuk meg az I oszlopban, hogy az egyes szállítóknak összesen mekkora díjat kellett fizetni a szállítások után.

5. Hozzunk létre az F8:K23 cellák fölött és formázzuk a minta szerint a szállítók teljes díját szemléltető diagramot. A diagram ne rendelkezzen jelmagyarázattal, de adjuk meg minden körcikkhez a cég nevét és az összes díjat tartalmazó feliratot a mintának megfelelően.

6. A G26:J30 tartományban a mintának megfelelően vizsgáljuk meg, hogy egy raktár és egy csomagátvevő hely közötti szállításnál melyik szállító és milyen szállítási díjért vállalja legolcsóbban a termékek fuvarozását. A táblázatrészt a mintának megfelelően formázzuk. Amennyiben a G27 és I27 cellákban megadjuk egy raktár és egy szállító sorszámát, akkor a G30 cellában jelenjen meg a  legkisebb ár, vagy ,,---'' három vonal, illetve az I30-as cellában jelenjen meg a szállító neve, vagy a ,,--- nincs ---'' felirat.

7. Alakítsuk ki a mintán látható elrendezést. A feladat megoldása során segédcellákat használhatunk az N oszloptól jobbra.

A feladathoz tartozó minta megtalálható a borítón.

Beküldendő egy tömörített i548.zip állományban a megoldást adó munkafüzet és egy rövid dokumentáció, amely leírja, hogy a munkafüzet melyik program segítségével készült.

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

(10 pont)


I. 549. A Vigenère-féle kódolásról októberi számunkban, a visszafejtés rejtelmeiről pedig mostani számunkban olvashatunk egy-egy cikkben. A feladat ezek alapján a kódolást és visszafejtést végző programok elkészítése lesz.

Készítsünk programot vcode néven, amely a bemenet első argumentumaként megadott szöveges állományt kódolja a második argumentumként megadott kulcsszó segítségével, és az eredményt egy szöveges állományba írja. A kimeneti állomány csak a bemeneti állomány magyar ABC szerinti betűinek kódját tartalmazza, tehát a szóközöket és írásjeleket hagyjuk el. A könnyebb olvashatóság kedvéért a sortörések maradjanak meg. A kimeneti állomány nevét egy ,,_vc'' szórészlettel egészítsük ki, az állomány kiterjesztése ne változzon.

Példa:vcode vers.txt KÖMALINFORMATIKA parancs futtatása esetén jöjjön létre a vers_vc.txt szöveges állomány.

Készítsünk programot vdecode néven, amely a bemenet első argumentumaként megadott szöveges állományt visszaalakítja a második argumentumként megadott kulcsszó segítségével, és az eredményt egy szöveges állományba írja. A bemeneti állomány a magyar ABC nagybetűit tartalmazza, szóközöket és írásjeleket nem. Az áttekinthetőség érdekében az állomány sorokra tagolt. A kimeneti állomány nevét egy ,,_de'' szórészlettel egészítsük ki, az állomány kiterjesztése ne változzon.

Példa:vdecode szoveg.txt KÖMALINFORMATIKA parancs futtatása esetén jöjjön létre a szoveg_de.txt szöveges állomány.

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

(10 pont)


I/S-jelű feladatok

A beküldési határidő: 2021. december 15.. 24:00 (UTC+01:00).


I/S. 57. Adott egy \(\displaystyle N\) elemű \(\displaystyle T\) tömb, amelynek az \(\displaystyle i\)-edik elemét \(\displaystyle T[i]\)-vel jelöljük \(\displaystyle (1 \le i \le N)\). A tömb összes eleme pozitív, \(\displaystyle N\)-nél nem nagyobb egész szám. A tömb leggyakoribb elemei közé akkor tartozik egy \(\displaystyle x\) szám \(\displaystyle (1 \le x \le N)\), ha nincs olyan másik \(\displaystyle y\) szám \(\displaystyle (1 \le y \le N)\), ami többször fordul elő \(\displaystyle T\)-ben, mint \(\displaystyle x\).

Módosításnak nevezzük azt, ha az eredeti \(\displaystyle T\) tömb egy elemét megváltoztatjuk egy tetszőleges pozitív, \(\displaystyle N\)-nél nem nagyobb egész számra. Két módosítás különböző, ha különböző elemét módosítjuk \(\displaystyle T\)-nek, vagy ugyanazt az elemét módosítjuk, de más értékre.

Adjuk meg minden \(\displaystyle x\) számra \(\displaystyle (1 \le x \le N)\), hogy hány olyan módosítás van, aminek a végrehajtása után a kapott tömbnek \(\displaystyle x\) egy leggyakoribb eleme lesz.

Bemenet: az első sorban az \(\displaystyle N\) szám található. A következő sorban \(\displaystyle N\) darab szám található: a \(\displaystyle T\) tömb elemei.

A kimenet egyetlen sorában adjunk meg \(\displaystyle N\) darab számot: az \(\displaystyle i\)-edik szám azon módosítások száma legyen, amikor \(\displaystyle i\) egy leggyakoribb elem.

Példa:

Magyarázat: az 1 egy leggyakoribb elem lesz, a 3. vagy 4. elemet bármilyen lehetséges értékre módosítjuk. Ez összesen \(\displaystyle 3 + 3 = 6\) eset. Ehhez hasonlóan lehet a 2 egy leggyakoribb elem. A 3 vagy a 4 nem lehet egy leggyakoribb elem.

Korlátok: \(\displaystyle 1 \le N \le 1000\), \(\displaystyle 1 \le T[i] \le 1000\). Időlimit: 0,3 mp.

Értékelés: a pontok 50%-a kapható, ha a program az \(\displaystyle 1 \le N \le 10\) elemszámú tesztesetekre helyes megoldást ad.

Beküldendő egy is57.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ó.

(10 pont)


S-jelű feladatok

A beküldési határidő: 2021. december 15.. 24:00 (UTC+01:00).


S. 156. Piripócson \(\displaystyle N\) utca van, melyek \(\displaystyle N\) csomópontban találkoznak. A csomópontok 1-től \(\displaystyle N\)-ig számozottak. Minden utca két csomópontot köt össze. Az utcákon két irányban lehet közlekedni és bármely csomópontból el lehet jutni bármelyik másikba. Egy turisztikai cég olyan túrát tervez, mely pontosan \(\displaystyle K\) utcán megy keresztül. Minden utcán legfeljebb egyszer haladnak át, és a túrán az egymás után következő utcák egyik végpontja közös.

Készítsünk programot, amely megadja, hogy hányféle túrát szervezhetnek. Két túra csak akkor különböző, ha van olyan utca, amit az egyik túra érint, de a másik nem.

Bemenet: az első sor tartalmazza a csomópontok \(\displaystyle N\) számát és a túra \(\displaystyle K\) hosszát. A következő \(\displaystyle N\) sor mindegyike egy-egy utca két végét írja le.

Kimenet: a kimenet első és egyetlen sorába a \(\displaystyle K\) hosszú túrák számát kell kiírni.

Példa:

Bemenet (a / jel sortörést helyettesít)Kimenet
4 2 / 1 2 / 1 3 / 2 3 / 2 4 5

Korlátok: \(\displaystyle 3\le N\le 500\), \(\displaystyle 1\le K\le 20\). Időlimit: 0,5 mp.

Értékelés: a pontok 50%-a kapható, ha a program az \(\displaystyle N\le 50\) elemszámú teszt­esetekre helyes megoldást ad.

Beküldendő egy s156.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ó.

(10 pont)


Figyelem!

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