Emelt szintű programozási feladatok
Készítsd el a leírások alapján a működő programokat a tanult programnyelven.
1.
feladat (vissza a menühöz)
Sík
felületek (pl. fürdőszobák, konyhák stb. padlózatának) burkolását Géza
mester a felület nagyságánál 20%-kal több felületet lefedő burkolólap
felhasználásával vállalja. Készítsen programot, mely billentyűzetről
beolvassa egy helyiség alapterületét, valamint a választott (téglalap
alakú) burkolólap szélességét és hosszúságát, majd megadja, hogy hány
darab burkolólapra van szüksége Géza mesternek a munka elvégzéséhez! A
szükséges darabszámot a program írja ki a képernyőre!
2.
feladat (vissza a menühöz)
Egy
sebességmérő műszer regisztrálja minden mellette elhaladó jármű
sebességét km/h-ban. Az egyik irányba haladó járművek sebességét
pozitív, a másik irányba (szembe) haladókét negatív értékként tárolja a
műszer. Készítsen programot, amely lehetővé teszi, hogy a műszer által
regisztrált adatokat billentyűzeten keresztül számítógépre vigyük! A
sebességadatokat (max. 100 db) a seb nevű tömbben tároljuk. Az adatok
megadásának végét a 0 értékkel jelöljük. A program az adatsor végére
tárolja el ezt a „0” értéket is! Az adatok eltárolása után a program
határozza meg, hogy milyen átlagsebességgel haladtak a járművek az
egyik, illetve a másik irányba! A meghatározott eredményt (illetve
eredményeket) írja ki a képernyőre!
3.feladat (vissza a menühöz)
Egy
légszennyezettség-mérő állomás óránként meghatározza a detektorába
érkező porszemek számát. (Ez egy 0 és 65535 közé eső érték lehet.) A
mérés eredményét feljegyzi egy éven keresztül a por(1..365, 0..23)
tömbbe. A por() tömb (i,k)-adik eleme az év i-edik napján k és k+1 óra
között mért pormennyiséget jelöli.
Készítsen programot, mely (műszer
hiányában) véletlenszerű értékekkel tölti fel a por() tömböt! A
feltöltött tömbben tárolt adatok alapján határozza meg, és írja
képernyőre az év „legporosabb” napjainak sorszámait, és az adott napon
észlelt összes por mennyiségét! Legporosabb napokon az olyan napokat
értjük, amelyeken a mért összes pormennyiség a teljes mérési időszakban
észlelt napi összes pormennyiségek maximumától legfeljebb 1%-kal tér el.
4.feladat (vissza a menühöz)
Készítsen
programot, amely beolvassa egy nullára redukált másodfokú egyenlet
valós együtthatóit, és a megoldóképlet alapján meghatározza a valós
gyökök számát!
A meghatározás alapján a program a képernyőn
jelenítse meg a „Nincs valós gyök!”, „Egy valós gyök van.”, „Két valós
gyök van.” szövegek közül a megfelelőt.
(M j: A valós gyökök száma nulla, ha (b*b-4*a*c) < 0.
A valós gyökök száma egy, ha (b*b-4*a*c) = 0.
A valós gyökök száma kettő, ha (b*b-4*a*c) > 0
Feltehetjük, hogy az egyenlet valóban másodfokú, tehát a négyzetes tag a együtthatója nem 0,
b az elsőfokú tag együtthatója, c pedig a konstans tag.)
5. feladat (vissza a menühöz)
Készítsen
programot lottóhúzás szimulálására! A program billentyűzetről olvassa
be, hogy hány szám közül, mennyit kell kihúzni, majd írja a képernyőre
a kihúzott számokat! Egy számot természetesen csak egyszer „húzhat” ki
egy sorsolás alkalmával.
(Mj: véletlen számokat (random numbers) a
legtöbb programozási nyelvben a random() vagy rnd() nevű függvénnyel
lehet előállítani. Bővebb leírást az adott környezet help-jében
találhat.)
6. feladat (vissza a menühöz)
Kísérlet
sorozatot végzünk pénzfeldobással. Készítsen programot, amely
billentyűzetről beolvassa és tárolja 15 feldobás eredményét (F=fej,
I=írás), majd meghatározza és képernyőre írja a leghosszabb „fej”
sorozat hosszát! A sorozat hosszán a benne szereplő feldobások
darabszámát értjük!
7. feladat (vissza a menühöz)
Török szultán
A
Török szultán születésnapján gyönyörű ajándékot kapott. Annyira
megörült, hogy rögtön valami jót akart cselekedni. Leküldte hát 400 fős
szolgaseregének első szolgáját a börtönbe. Meghagyta neki, hogy mind a
400 cella ajtaját nyissa ki. Lett is nagy riadalom. A börtönőrök
rettegtek. Ha szabadon engedik a rabokat, és őfelsége kedve változik,
fejüket veszi. Leült hát négyszáz őr a négyszáz nyitott cella elé.
Teljesítették is a szultán parancsát, de a rabokat sem engedték
szabadon. Igazuk lett. A szultán megharagudott, mert a következő
ajándék nem tetszett. Leküldte a második szolgát. Azt parancsolta,
minden második ajtót zárjon be. Kisvártatva meggondolta magát, és
leküldte a harmadik szolgát, hogy minden harmadik ajtót nyissa ki, ha
zárva van, és zárja be, ha nyitva van. Majd leküldte a negyedik
szolgát, hogy minden negyedik ajtón változtasson. Aztán az ötödiket,
hatodikat… és így tovább egészen addig, míg az utolsó, a 400. szolgának
azt parancsolta: Menj le és a 400. cellát nyisd ki, ha zárva van, De ha
nyitva lenne, akkor zárd be. Így is lett. Azzal a szultán nyújtózott
egyet, és lefeküdt aludni.
A börtönparancsnok tudta, aznap már több
parancs nem jön, és a szultán soha nem vonja vissza azokat a
parancsait, amit előző nap adott. Szabadon engedte hát azokat, akiknek
a cellája nyitva volt. Kiket is?
Az ön által ismert programnyelven
készítsen programot mely, szimulálja a fenti eseményeket, és végül
megadja mely cellák ajtaja lesz nyitva a végén!
8. feladat: (vissza a menühöz)
Készítsen programot, mely eldönti, hogy a megadott matematikai kifejezés helyesen zárójelezett-e!
A
szöveges kifejezésben a következő karakterek szerepelhetnek: 0..9, +,
-, *, /, (, ). (Számok, elemi matematikai műveleti jelek, nyitó, ill.
záró zárójel. Feltételezhetjük, hogy megfelelő a kifejezés, ezért nem
kell ellenőrizni a beolvasáskor, hogy van-e illetéktelen karakter.)
A beolvasott kifejezésre a program a következő ellenőrzéseket végezze el!
a) a zárójelpárok megvannak-e (ugyanannyi nyitó, mint záró zárójel)!
b) A zárójelpárok megfelelően helyezkednek-e el! (Előbb nyit, azután
zár.) (Figyelem, a zárójelek egymásba ágyazódhatnak!)
A program a kifejezés beolvasása után következő üzeneteket küldi:
a) 'HIBA: Eltérő számú nyitó és zárójelek.’, vagy 'Egyező számú nyitó és zárójelek.'
b) 'HIBA: Zárójelek rossz sorrendben.', vagy 'Megfelelő zárójel sorrend.'
9. feladat: (vissza a menühöz)
Egy szöveges fájlban, szóközzel elválasztva soronként szerepel különböző cégek napi tőzsdei záró árfolyama egy hétre.
Készítsen
programot az ön által ismert nyelven, mely megadja azt a céget, amelyik
a hét folyamán a legnagyobb stabilitást mutatta! Azt a céget tekintjük
stabilnak, amelynek a záróárfolyama a lehető legkevesebbet változik.
Adja meg a ’stabilitásösszeget’ is, amely a szomszédos napok
záróárfolyam-különbözet abszolút értékeinek összege.
Az alábbi adatok megtalálhatók az ecegarf.txt szöveges adatfájlban!
Minta:
| 1.nap | 2.nap | 3.nap | 4.nap | 5.nap | 6.nap | 7.nap | CÉG |
| 1500 | 1709 | 1839 | 1948 | 1923 | 1930 | 1944 | AlfaBt. |
| 3000 | 3291 | 3255 | 3365 | 3511 | 3497 | 3631 | BetaKft. |
| 1000 | 1279 | 1285 | 1375 | 1356 | 1347 | 1399 | GammaRt. |
| 14000 | 14208 | 14263 | 14359 | 14454 | 14532 | 14583 | DeltaBt. |
| 7000 | 6972 | 7037 | 6987 | 7135 | 7104 | 7133 | EpszilonRt. |
| 23000 | 23241 | 23234 | 23373 | 23359 | 23442 | 23392 | ZétaKft. |
| 1800 | 1918 | 1925 | 1997 | 2127 | 2249 | 2327 | ÉtaGnbh. |
10. feladat: (vissza a menühöz)
Adott
egy kizárólag alapműveleteket (+,-,*,/,=), számokat és zárójeleket
tartalmazó kifejezés. Vezessünk be egy „s” számot, amely a zárójelek
állapotát figyeli. Kezdőértéke legyen nulla. Balról jobbra haladva
egyesével megvizsgáljuk a kifejezésben előforduló jeleket. Amennyiben
zárójelet találunk, kiértékeljük. Minden zárójelnyitásnál növeljük,
zárásnál csökkentsük „s” értékét.
Készítsen programot, mely eldönti, hogy helyesen zárójelezett-e a megadott kifejezés!
Akkor helyesen zárójelezett, ha bármely pillanatban igaz, hogy s>=0, és a végén s=0.
A kifejezésben előforduló egyéb karaktereket nem kell ellenőrizni.
11. feladat: (vissza a menühöz)
A
FAT fájlrendszer fontos eleme, hogy az adatokat ún. clusterekben
(klászter) tárolja el. A cluster mérete 512 Bájt (= 1 szektor) és kettő
valamilyen hatványának, szorzata. Általában KiloBájtban adják meg. A
cluster lehet pl. 4 szektor (=4*512 Bájt= 2 KB), 8, 16 stb., de nem
lehet 3, 5, 6 stb. szektoros. A FAT tehát minden fájt feldarabol
cluster méretű szeletekre, eltárolja, majd bejegyzi egy táblázatba,
hogy hova is tette a lemezen. Ha a fájl csak több clusterben fér el,
azokat nem feltétlenül egymás mellett helyezi el. A táblázatból
bármikor vissza tudja állítani az eredeti sorrendet. Egy clusterbe
egyidejűleg csak egy fájl írhat. Ha nem tölti ki teljesen, akkor az a
terület más célra nem használható. Egy 100 bájtos fájl is lefoglal
tehát 2 KB-ot, ha ekkora a cluster.
Készítsen programot, mely
megadja a cluster mérete, illetve a – maximum 15 – fájl mérete alapján
az általuk lefoglalt terület méretét! A fájlok mérete bájtban van
megadva.
Az egyszerűség kedvéért a legkisebb cluster méret 1 KB legyen.
12. feladat: (vissza a menühöz)
Egy
középiskolai végzős osztályba maximum 35 fő jár. Az érettségi
tantárgyak négy kötelező valamint egy szabadon választott tantárgy.
Készítsen programot, amely beolvassa egy szövegfájlból (vizsga.txt)
a diákok neveit, szabadon választott érettségi vizsgatantárgyaikat és
meghatározza minden fakultatív vizsgatárgyhoz az érettségizők névsorát.
Az eredményt a képernyőre írassa ki!
A szövegfájlban minden diák
neve és tantárgya egy sorban pontosvesszővel (;) elválasztva szerepel.
A fájl annyi sorból áll, amennyi diák szerepel benne.
13. feladat: (vissza a menühöz)
Készítsen
programot, amely beolvassa egy kocka e él hosszát, valamint egy
papírlap a és b oldalhosszait, majd meghatározza, hogy a kocka
elkészíthető-e az a*b méretű téglalap alakú papírból! Ha a kocka
elkészíthető, a program jelenítse meg az „ELKÉSZÍTHETŐ”, ha nem, akkor
a „NEM KÉSZÍTHETŐ EL” szöveget a képernyőn! A két szöveg közül
természetesen csak az egyiket szabad megjeleníteni!
Definíció:
Egy kockát egy téglalap alakú papírból elkészíthetőnek nevezünk, ha a
papír rövidebb oldala legalább 3*e, a hosszabb oldala pedig legalább
4*e hosszúságú.
14. feladat: (vissza a menühöz)
Statisztikai
kísérlet sorozatot végzünk kockadobással. Készítsen programot, amely
billentyűzetről beolvassa és tárolja 50 dobás eredményét (egy dobás
eredmény az 1, 2, 3, 4, 5, 6 számok valamelyike), majd meghatározza, és
képernyőre írja az előforduló leghosszabb „szigorúan monoton csökkenő”
rész sorozat hosszát! A sorozat hosszán a benne szereplő dobások
darabszámát értjük!
15. feladat: (vissza a menühöz)
Egy elektronikus céltábla a lövedék becsapódási helyének koordinátáit
adja vissza, oly módon, hogy a derékszögű koordinátarendszer origója a
tábla középpontja, a tengelyeken a skála pedig az origótól mért
távolság milliméterben. A becsapódási adatok alapján a lövés
pontértékét úgy számoljuk, hogy a középponttól való távolságot
(milliméterben) kivonjuk 1000-ből és maradékosan osztjuk 100-zal.
Amennyiben az így számított pontszám negatív lenne, nulla pontot adunk!
Az origótól mért távolság képlete:

ahol d a távolság, a becsapódás koordinátái pedig x és y.
Készítsen
programot, amely kiszámítja egy lövés pontértékét! A becsapódási
koordinátákat a billentyűzetről olvassa be, a pontértéket a képernyőre
írja ki!
16. feladat: (vissza a menühöz)
Egy madármegfigyelő állomáson a vonuló gólyákat tanulmányozzák. Tíz
napon keresztül rögzítik az állomás fölött elvonuló gólyák számát. Adja
meg a napok sorszámát az átvonuló madarak darabszáma szerint növekvő
sorrendben, oly módon, hogy az egyes számok külön sorba kerüljenek,
kivéve az olyan napoknál, ahol az észlelések száma megegyezik, az ilyen
esetekben a számok egy sorba kerüljenek, egymástól szóközzel
elválasztva!
Például:
Bemenet:
| 34 | 32 | 32 | 63 | 64 | 64 | 64 | 23 | 12 | 8 |
Kimenet:
10
9
8
2 3
1
4
5 6 7
Készítsen
programot a fenti feladat megoldására! A bemenő adatokat a
billentyűzetről olvassa be, az eredményt a képernyőn jelenítse meg!
A
megjelenítésnél az egy sorba kerülő számok (azonos észlelési számhoz
tartozó napsorszámok) sorrendje a soron belül tetszőleges.
17. feladat: (vissza a menühöz)
Egy évben 52 alkalommal van lottóhúzás. Minden héten 90 szám közül húznak ki 5 különbözőt.
Készítsen
programot, amely véletlenszerűen generálja és a megfelelő változóban a
memóriában tárolja egy év 52 húzásának eredményét!
Vizsgálja a húzások eredményeit!
Határozza meg, hogy melyik számot hány alkalommal húzták ki az 52 hét során!
Készítsen
listát a képernyőre, mely az egyes számokat tartalmazza a kihúzásuk
száma szerint csökkenő sorrendben! A lista egy elemének formátuma a
következő legyen: [lottószám; kihúzások száma]. Egy sorba 6 listaelem
kerüljön, kivéve az esetleges utolsó sort, ahol ennél kevesebb is
szerepelhet! Azon számokat, amelyeket az év során egyszer sem sorsoltak
ki, ne szerepeltesse a listában!
A következő példa csak a kimeneti
formátum bemutatására szolgál, a benne szereplő adatok nem képeznek egy
adott húzássorozathoz tartozó helyes megoldást:
[3;7][12;7][45;6][32;6][23;6][14;6]
[73:6][82;5][77;5][9;5][67;5][18;4]
[53:3][90;1][38;1][72;1]
18. feladat: (vissza a menühöz)
A ferde hajítás távolságát az alábbi képlettel számoljuk ki:
ahol:
sx max a hajítás távolsága méterben
v0 az elhajított test
kezdősebességének nagysága m/s–ban,
α a kezdősebesség irányvektorának a
vízszintessel bezárt szöge,
g pedig a gravitációs gyorsulás (melynek
közelítő értéke 9,81 m/s2 a Földön).
Készítsen programot, amely a
képlet alapján meghatározza, hogy egy adott kezdősebességgel és adott
szögben elhajított test milyen messzire repül! A kezdősebesség
nagyságát és szögét a
billentyűzetről olvassa be! Az eredményt a képernyőre írja ki!
A
feladat megoldásaként teljes, fordítható és futtatható kódot kérünk,
mely az adatokat – ha szükséges – billentyűzetről (standard input)
olvassa, és a képernyőre (standard output) írja ki.
Vizuális
fejlesztőeszköz használata esetén az algoritmust konzol alkalmazásként
(szöveges ablakban futó) kérjük elkészíteni! Beadandó a feladatot
megoldó program forráskódja!
19. feladat: (vissza a menühöz)
Egy
út mellé felállított traffipax készülék rögzíti a mellette elhaladó
járművek sebességének nagyságát. Az adott helyen a megengedett
legnagyobb sebesség 90 km/h. Készítsen programot, amely a
billentyűzetről beolvassa a legutóbb elhaladt 10 jármű sebességét, majd
képernyőre írja a szabályosan haladó járművek átlagsebességét, valamint
a gyorshajtó járművek darabszámát!
A feladat megoldásaként teljes,
fordítható és futtatható kódot kérünk, mely az adatokat – ha szükséges
– billentyűzetről (standard input) olvassa, és a képernyőre (standard
output) írja ki.
Vizuális fejlesztőeszköz használata esetén az
algoritmust konzol alkalmazásként (szöveges ablakban futó) kérjük
elkészíteni! Beadandó a feladatot megoldó program forráskódja!
20. feladat: (vissza a menühöz)