Programozás II. félév
1. Vigyük lemezre egy üzem leltárát! A leltár adatai:
- termék kódja
- termék neve
- egységár
- mértékegység
Az adatokat egysoros állományba helyezzük el a termék kódja szerint növekvő sorrendben, majd készítsünk egy listát, ahol a rekordokat kiegészítjük egy értékmezővel (mennyiség * egységár), a lista végén pedig nyomtassunk ki egy összegen mezőt (az értékek összege)!
2. Hozzunk létre egy vállalat eladásairól egy mágneslemezes állományt! A rekordokban a következő mezők vannak:
- a berendezés típusa
- garanciális idő
- megnevezés
- ár
- eladott darabszám
Ellenőrizni kell a garanciális idő, ár, eladott darabszám mezőket! A helyes rekordokat fel kell írni az állományba, a hibásakat a hiba okának megjelölésével listázni kell!
3. Egy törzsállomány rekordjai a következő adatokat tartalmazzák:
- azonosítószám
- érték
A javítóállomány egy rekordjának felépítése:
- mutató
- azonosítószám
- érték
A mutató nulla, ha a megfelelő törzsrekordot törölni kívánjuk; 1, ha új termékről; 2, ha változásról van szó. Változtatás esetén a javítórekordban szereplő érték kerül a törzsrekordba. Az állományok az azonosítószámok szerint növekvően rendezettek, és egy azonosító csak egyszer fordul elő. Hozzuk létre a javított törzsállományt!
4. Rendelkezésünkre állnak egy síugró verseny adatai:
- a benevezett versenyzők rajtszáma,
- a versenyzők neve,
- a versenyzők nemzetisége,
valamint egy másik állományban az elért eredményeik:
- rajtszám,
- elért eredmény méterben.
Készítsünk eredménytáblát a versenyről!
5. A Kereskedelmi Minisztériumhoz tartozó 8 nagykereskedelmi vállalat értékesítésének havi adatait az 1987. évben egy soros állomány tartalmazza.
A rekordok az alábbi felépítésűek:
- a vállalat neve,
- a vállalat kódja,
- a hónap kódja,
- forgalmi értéke.
Negyedéves feldolgozás céljából vigyük az egyes negyedévekhez tartozó rekordokat 4 különböző soros állományba!
6. Egy soros állományban különböző vállalatoknak egy bankkal való kapcsolatait írtuk le. Az állomány egy rekordja a következő felépítésű:
- a vállalat kódszáma,
- a vállalatnak a bankkal szemben fennálló tartozása.
Ha a tartozás negatív, akkor a vállalat követel, ha pozitív, akkor a vállalat tartozik. Egy vállalatra csak egy rekord vonatkozik. Listázzuk külön-külön a tartozó és a követelő vállalatokat!
7. Egy raktár készletét egy soros állományban jegyeztük fel. Az állomány egy rekordja egy árufajtát tartalmaz:
- az áru kódja,
- a raktáron lévő mennyiség,
- egységár,
- az áruból szükséges minimális mennyiség.
Készítsünk listát azokról az árukról, amelyek raktáron lévő mennyisége nem éri el a szükséges minimális mennyiséget, illetve azokról, amelyek összértéke meghaladja a 10.000Ft.ot!
8. Egy soros állomány rekordjai egy kereskedelmi vállalat dolgozóitól a következő adatokat tartalmazzák:
- a dolgozó azonosító száma,
- vezető beosztásban van-e,
- legmagasabb iskolai végzettsége.
Nyomtassuk ki azoknak a dolgozóknak a rekordjait, akik vezető beosztásban vannak és nincs felsőfokú végzettségük!
9. Egy soros állomány egy olimpia adatait tartalmazza. Az egyes rekordok az alábbi felépítésűek:
- a földrész kódja (Európa, Ázsia, Amerika, Ausztrália, Óceánia, Afrika),
- ország név,
- az Ország kódja,
- az ország sportolói által elért pontszám.
Nyomtassuk mindazon országok nevét, amelyek nem sportolói legalább 25 pontot értek el, s jelöljük meg ezen a listán az Európán kívüli országokat!
10. Egy soros állományban egy vállalat melléállású dolgozóinak fizetési adatai vannak. Egy rekord egy dolgozóra vonatkozik:
- a dolgozó azonosítója,
- a dolgozó neve,
- a dolgozó havi bére.
Határozzuk meg a dolgozóknak járó bért egyénenként és összesen, ha a 20%-os adóelőleg levonását is figyelembe vesszük. Nyomtassuk ki a dolgozók nevét, nettó és bruttó bérét, valamint az adóelőleg összegét!
11. Egy vállalat egy havi termelési adatait a hónap végén egy soros állományba vitték. Minden termékről egy-egy rekord készült a következő felépítéssel:
- a termék kódja,
- a naponkénti termelés mennyisége,
- a naponkénti selejt mennyisége.
Készítsünk összesítést a havi termelésről! Nyomtassuk ki minden termékről a következő adatokat:
- a termék kódja,
- a havi termelés mennyisége,
- a havi termelés hány százaléka selejt!
12. Egy szekvenciális állományban a havi eladásokról vannak adatok ügyfelenként csoportosítva. Egy rekord felépítése a következő:
- ügyfélazonosító,
- számlaazonosító,
- szála összege.
Ügyfelenként több számla is lehet. Készítsünk listát, amelynek egy rekordja egy ügyfélre vonatkozik, a havi számlájának összegét tartalmazza!
13. Egy kórház szülészeti osztályán statisztikát készítenek az élve született csecsemőkről. Minden újszülöttről egy rekord készül:
- azonosító szám,
- a csecsemő neme,
- koraszülött-e,
- születési súlya.
Készítsünk programot, amely meghatározza a fiúk és lányok számát, átlagos születési súlyukat és hogy hány koraszülött fiú, illetve lány született!
14. Egy egyetem oktatóiról a következő adatokat rögzítették egy soros állományban, tanszékek szerint csoportosítva:
- neve,
- munkakönyvének száma,
- neme,
- besorolása (egyetemi tanár, docens, adjunktus, tanársegéd),ű
- a tanszék kódja,
- az oktató fizetése.
Határozzuk meg
15. Egy forgalomszámlálás eredményéről a következőket tároljuk:
- a megye kódja,
- városnév,
- a gépkocsi fajtája (személygépkocsi, teherautó, autóbusz),
- a járművek száma.
Egy városhoz több rekord is tartozhat. Az állomány a megye azonosítója, azon belül a város szerint rendezett. Készítsen listát a városonkénti forgalomról, majd összesítést a megyei, illetve országo adatokról!
16. Az egész számok számjegyes (karakteres) ábrázolásánál tömörebb ábrázolása a következő: minden számjegyhez 4 bitet rendelünk, a ’0’-hoz 0000-t, az ’1’-hez 0001-et, … a ’9’-hez 1001-et. Így egy bájt a szám két számjegyét képes tárolni. Írjunk programot, amely segítségével legfeljebb 6 számjegyből álló (karakteres ábrázolású) számokat ilyen ún. BCD ábrázolású (3 bájtos) számokká alakítja (és viszont)! A negatív szám előjelét első ’számjegyenként’ az 1111-kód jelentse!
17. Helyezzünk 10-10 kört és téglalapot véletlenszerűen a képernyőre! Nem lóg ki egyik sem?
18. Írjunk programot, melynek segítségével könnyem tudunk egyszerű rajzokat készíteni! Rajzoljon pontonként a gép: a kurzormozgató billentyűk hatására négy irányban hagyjunk nyomot a képernyőn!
19. Írjunk programot, melynek segítségével a képernyő egy kis területe a számítógéppel megjegyezhető, és adott (más) helyre kirajzolható!
20. Bizonyos alakzatokat (kör, ellipszis, szabályos sokszögek stb.) nagyon könnyű nagyítani. Írjunk ilyen programokat!
21. A képernyő valamelyik negyedében lévő idomot tükrözzük a többi három negyedbe is!
22. Tükrözzünk egy alakzatot tetszőleges irányú egyenesre!
23. Próbáljuk meg szabályos sokszögekkel beborítani a képernyőt. A sokszögek hézagmentesen illeszkedjenek, és ne is fedjék egymást, az ilyen lefedést szokták parkettázásnak is nevezni. Hány oldalú sokszögekkel oldható ez meg? Írjunk programot, amely ilyen szabályos sokszögekkel parkettáz!
24. Körgyűrűket rajzoltathatunk úgy is, hogy egy N*N-es pontrács minden (x,y) pontját egyenként megvizsgáljuk, vajon páros-e az INT (s*x/N)^2 + (s*y/N)^2 érték? Ha igen, akkor kigyújtjuk a pontot, ellenkező esetben nem. Az s változtatásával hogyan módosul az ábra?
25. Az előző feladatokban a négyzetösszeget a párosságán kívül vizsgálhatjuk aszerint is, hogy mondjuk osztható-e hárommal (vagy néggyel, öttel, stb.), és eszerint rajzolunk pontokat vagy sem. Ilyenkor az előző ábráknak érdekes ’ritkítása’ adódik.
26. Sokkal látványosabb, ha például az öttel való oszthatóságnál öt esetet különböztetünk meg: az öt lehetséges maradék szerint választunk színeket a pontok számára. Valószínűleg sokkal több szabályosságot fogunk felfedezni!
27. Ábrázoljuk a [2;3] intervallumon az
x ® 5 * x – 5
függvény grafikonját oly módon, hogy az értelmezési tartomány pontjain (a képernyő felbontása által megengedett lépésközzel) végighaladva minden ponthoz számítsuk ki a függvényértéket, majd ábrázoljuk az ennek megfelelő pontot! Használjunk a képernyő vízszintes és függőleges felosztásánál azonos mértékegységeket, az origót helyezzük a képernyő bal alsó sarkába!
28. Ábrázoljuk a [-2;5] intervallumon az
x ® 2 * x + 1
függvény grafikonját! Rajzoljuk meg a koordinátatengelyeket is, és jelöljük rajtuk az egységeket!
29. Ábrázoljuk az
x(t) = r * sin(t)
y(t) = r * cos(t)
Paraméteres alakban adott kört a 0<t<=6.28 intervallumban! Igazítsuk a lépésközt a képernyő felbontóképességéhez és a gép sebességéhez!
30. Készítsen egy olyan programot, amely a képernyőre rajzol egy sakktáblát!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31. Készítsen egy olyan programot, amely a képernyőre rajzolja a malom játék tábláját!
|
|
||||
|
|
|
|
||
|
|
|
|||
|
|
|
|
||
|
|
||||
|
|
||||
32. Készítsen egy olyan programot, amely a sík rácspontjain történő véletlen bolyongást szemlélteti!
33. Rajzoljon egy két mutatós órát (perc, másodperc). Nem szükséges a valós időt mutatnia, csupán a mutatók mozgása a lényeg!
34. Egy biliárdasztalon adott irányból
meglöktünk egy golyót. Rajzoljuk le a golyó útját, ha a mozgást lassulás
nélkülinek tekintjük.
Input: (x,y) fok [0,360]
35. Ábrázoljunk egy működő digitális
órát. Nem szükséges a valós időt mutatnia, csak a működés (változások) a lényeg. óra perc
másodperc
fekete
századmásodperc
fehér
piros
36. Készítsünk olyan programot, amely a billentyűzeten lenyomott karaktereket a képernyő egy véletlen területére, véletlenül választott színnel és nagysággal kétszer kiírja!
37. Ismert egy öttusaverseny öt számának eredménye. Írjunk algoritmust, amely megadja, hogy kik végeztek legalább két számban az első 6 között!
38. Ismert egy öttusaverseny öt számának eredménye. Írjunk algoritmust, amely megadja, hogy kik voltak azok, akik minden számban az első hat hely valamelyikén végeztek!
39. Televíziónkon K adó adásait tudjuk fogni; ismerjük mindegyikük adásidejét. Készítsünk algoritmust, amely meghatározza, hogy mikor nincs egyik csatornán sem adás!
40. Televíziónkon K adó adásait tudjuk fogni; ismerjük mindegyikük adásidejét. Írjunk algoritmust, amely meghatározza, hogy mikor van egyszerre az összes csatornán adás!
41. Írjunk olyan algoritmust és programot, mely egy beolvasott szöveg betűinek ASCII kódját sorban kiírja! (Így egy szöveg esetleg nem látható – rejtve maradt – jelei is láthatóvá válnak.)
42. Adott egy osztály névsora, például adatállományból olvastuk be. Válogassuk ki a testvéreket (pontosabban: az azonos vezetéknevű tanulókat)!
43. Készítsen programot, amely megmondja, hogy egy beolvasott szövegben megtalálhatók-e egy másik hasonlóan megadott szöveg!
44. Írjunk programot, amely egy szövegben megszámolja a szavakat! (Figyelem: 2 szó között nem biztos, hogy csak egy db szóköz van! Az feltehetjük, hogy az írásjelek közvetlenül megfelelő szavak mögé írjuk és hogy nincs elválasztva egyetlen szó sem!)
45. Szeretnénk egy szöveg értelmét mások elől ’eltitkolni’, ezért kitaláltuk a következő titkosírási szabályt: minden jelet kicserélünk az ASCII kódban rákövetkező karakterre, és így tároljuk, vagy jelenítjük meg. (Ha olyan karaktert kell átalakítani, melynek nincs ’értelmes’ rákövetkezője, akkor helyette írjuk a legelső karaktert!) Tervezzünk olyan programot, mely elvégzi a megfelelő átalakítást, és kiírja az így kapott szöveget!