Személyes eszközök
Keresés

 

A InfoWiki wikiből

A lap korábbi változatát látod, amilyen WikiSysop (vita | szerkesztései) 2009. szeptember 12., 13:07-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)



II. zárthelyi dolgozat

A dolgozat témakörei:

  • függvények írása, használata
  • közös (static) változók használata függvényekkel
  • függvényparaméterek és visszatérési értékek használata
  • rekordok készítése és használata
  • listák egyszerű adattípusokkal (pl. Int32)
  • listák egy tömbök használata rekordokkal

A feladatok megoldása során fontos függvények használata kötelező. Egyes feladatok megoldása során függvényparaméterek és visszatérési értékek használata mellett kell függvényeket írni. Más feladatoknál előírás lehet ezek használatának kerülése. Ekkor a static közös változókon keresztül lehet tartani a kapcsolatot az alprogramok között.

A zárthelyi dolgozatokat gép előtt kell írni. Sem papíros és elektronikus alapú segítséget nem lehet használni. Egyetelen kivételt képez a Visual Studio Súgó-ja. Internetes weblapok nem látogathatók!

A feladatok megoldására 2x45 perc áll rendelkezésre. Az idő leteltével a megoldások forráskódját (.cs file-ok) kell beadni. A forráskódnak minden esetben tartalmaznia kell az alábbiakat:

  • a dolgozat írásának időpontját (nap, óra)
  • a megoldott feladat sorszámát (csoport, azon belül feladat sorszáma)
  • a megoldó nevét, és e-mail címét, neptun kódját

A megoldásokat web-es email kliensen keresztül kell egy csatolt file-ként elküldeni, ezért kérem mindenkit, hogy legyen ilyen jellegű accountja.

Mivel egyes web-es levelezők a csatolmányokat csak rövid ideig őrzik meg, ezért javasolt a forráskódokat a levél törzsébe is bemásolni (copy-paste). A Visual Studio-ból való direkt Copy-Paste a Syntax-Highlight miatt HTML-es alapon megy, melyet viszont egyes levelező felületek rosszul értelmeznek. Ezért javasolt a forráskódot copy-paste-val először a jegyzettömbbe (notepad) bemásolni, majd onnan újabb copy-paste-val tovább másolni a levél törzsébe, így garantált a plain text eredmény.

Tartalomjegyzék


Feladatok (vektorokra)

ZH feladat

Írjunk olyan programot, amely induláskor bekér egy N értéket, majd egy N elemű egész vektort feltölt véletlen értékekkel a [10,99] intervallumból. Utána egy 20 menetes ciklusban sorsoljunk ki véletlen számokat ugyanezen intervallumból, és mindegyikhez írjuk ki, szerepel-e a vektorban vagy sem. Határozzuk meg, a 20 számból összesen hány szám szerepelt a vektorban (tehát hány olyan szám volt, amelyet a vektor feltöltése közben is kisorsoltunk, majd a 20 szám között újra kisorsoltunk).

ZH feladat

Írjunk olyan programot, amely számokat kér be, és helyez el egy 10 elemű vektorban. Csak olyan számokat fogadjunk el és tároljunk, amelyek pozitívak és párosak. Amikor a tömb már tele van számokkal, akkor fejezzük be a bekérést, és írjuk ki a tömbelemeket fordított sorrendben a képernyőre.

ZH feladat

Írjunk olyan programot, amely egy 10 elemű vektort a következőképp tölt fel billentyűzetről:

  • bekérünk egy sorszámot
  • leellenőrízzük hogy létezik-e ilyen vektorelem egyáltalán, és ő még nem került feltöltésre. Ha ezen sorszámú vektorelem már kapott értéket, akkor azt még egyszer ne engedjük feltölteni
  • ha minden rendben van, akkor bekérhetjük értéket is
  • ha a sorszám -1, akkor kérjük be az értéket, és minden olyan tömbelem, amely még nem kapott értéket – annak legyen ez az értéke

Ezt ismételgessük addig, amíg minden tömbelem meg nem kapta az értékét. Ekkor lépjünk ki a ciklusból, és írjuk ki a vektor elemeit a képernyőre.

ZH feladat

Írjunk olyan programot, amely egy 10 elemű vektort a következőképp tölt fel billentyűzetről:

  • bekérünk egy sorszámot, és egy darabszámot, valamint egy értéket
  • ezen sorszámtól ennyi darab még fel nem töltött tömbelemnek legyen az értéke a bekért szám
  • mindig írjuk ki, hogy hány darab vektorelem (és esetleg melyek) kaptak értéket ebben a menetben
  • figyeljünk rá, hogy nehogy alul-, vagy túlindexeljük a vektort. az induló sorszám és a darabszám szélsőséges értékeket is felvehet.

Pl. sorszám=-3, db=10, érték=15) esetén nyilván nincs -3 sorszámú tömbelem, de -3-tól 10 hosszon keresztül azért lesznek létező tömbelemek is. Ugyanakkor (sorszám=4, hossz=20, érték=12) esetén a 4. tömbelemtől kezdve 20 db tömbelemnek nem tudunk értéket adni, mert annyi már nincs hátra a tömbből, de a létező tömbelemeknek igen.

ZH feladat

Írjunk olyan programot, amely egy 10 elemű vektort a következőképp tölt fel billentyűzetről:

  • feltölti véletlen 10..40 közé eső számokkal,majd kiírja a képernyőre, megadván az elemek sorszámát és értékét
  • bekér egy alsó és felső értéket
  • minden elemet, amely ezen értéktartomány közé esik: újragenerál 10..40 közé eső számokkal
  • ezt addig ismétli, amíg alsó értékként 0-t nem adunk meg. ekkor a felső értéket már be sem kell kérni.
  • a program a végén adja meg a tömbelemek összegét.

Feladatok (listákra)

ZH feladat

Írjunk olyan programot, amely N,A,B számokat kér be, majd generál véletlen számokat az [A,B] intervallumból, N darabot, és helyez el egy listában. Ezt addig ismételgeti, amíg N értékeként 0-t nem adunk meg. Ezek után határozzuk meg, hány olyan páros szám van, amely az [X,Y] értékek közé esik, ahol X a lista legelső elemének értéke, Y pedig a legutolsó elemének értéke.

Feladatok (rekordokra)

ZH feladat

Egy felnőtt embert jellemez az azonosítója (sorszám), születési éve, magassága, súlya. Legyen N és M egy-egy véletlen érték [20,40] intervallumból. Generáljunk egy listába N darab (férfi), egy másik listába pedig M darab (nő) adatait random módon. Válasszunk ki 10 férfi és 10 nő adatait a listából véletlenszerűen, és írjuk ki hogy ki kivel kössön házasságot (azonosító-párokat, és egyéb adataikat). A probléma megoldása során ügyeljünk arra, hogy egyetlen férfit és nőt se sorsoljunk ki 2x, lévén hogy a bigámia nem megengedett jelenleg Magyarországon!

ZH feladat

Egy CD nyilvántartásban egy CD-ről leírjuk a CD azonosítóját (sorszám), árát, beszerzési évét, és hogy hányszor játszottuk le. Generáljunk egy 100-as CD gyűjteményt random, értelmes adatokkal, és helyezzük el egy megfelelő vektor-ban. Kérjünk be billentyűzetről N és M számokat, és határozzuk meg azon CD-k számát, és árának összegét, amelyet legalább N-szer játszottunk le, és később szereztük be, mint M.

ZH feladat

Készítsünk programot, amely a klasszikus autós kártyás játékot szimulálja. Egy ilyen autós kártyán 4 adat található: az autó neve, a lóerők száma, a maximális sebessége, és a fogyasztása. Ez utóbbi tört szám, maximum egy tizedes jeggyel (tehát pl 8.0, vagy 12.4). Készítsünk erre egy rekordot, majd két listát, melyre 10-15 véletlen értékkel feltöltött rekordot helyezünk el.

A klasszikus játékmenet szerint a két játékos a saját kártyapakliját elhelyezi az asztalon, majd mindenki felfordítja a felső lapját, és egyikük autója üti a másikét. Lehet játszani lóerőben, sebességben, és fogyasztásban.

A program párosával vegye elő a kártyákat, és hasonlítsa össze. Jelen példában játszunk lórerőben, vagyis az az autó nyer, amelyiknek nagyobb a lóerő értéke. Ha a két kártyán egyenlőek a LE értékek, akkor ebben a körben egyik játékos sem nyert. Számoljuk melyik játékos hányszor nyert, majd hirdessünk végeredményt (vagy az egyik játékos nyert, vagy a másik, vagy döntetlen lett).

ZH feladat

Egy könyvtári könyvet az alábbi adatok írnak le: könyv címe, könyv ára, kiadás éve, kölcsönzők száma (akik kikölcsönözték). Az adatokat értelmes módon véletlen értékekkel generálhatjuk. Töltsünk fel egy 20 elemű vektort könyvekkel, majd határozzuk meg, hány olyan könyvünk van, amelyek kevesebb mint 10-szer lettek kikölcsönözve, és drágábbak mint 10.000 Ft.

ZH feladat

A BANK-ban használt alkalmazás ügyfelek adatait kezeli az alábbi mezőkkel:

  • azonosítókód (7 számjegyű egész szám)
  • név
  • számlaegyenleg (egész szám, forintban értendő)
  • PIN kód (4 jegyű szám)

Az ügyfelek listáját billentyűzetről töltsük fel. Első lépésként kérjük be hány elemű lesz az ügyfél törzs, majd kérjük be az adatokat billentyűzetről. A feltöltés során ügyeljünk arra, hogy az ügyfél azonosító kódja egyedi kell legyen a listán belül. Ha egy ügyfél azonosító kódot a kezelő két ügyfélnél egyformán adná meg, akkor erre figyelmeztessük a kezelőt, és kérjünk be új ügyfél azonosítót mindaddig, amíg különbözőt nem ad meg.

Készítsünk el tranzakciók egy listáját az alábbi adatokkal

  • ügyfél azonosító kód (7 számjegyű egész szám)
  • hány napja történt a tranzakció (1..100 random érték, egész)
  • pénzmozgást jelölő flag, ez egy egész érték, kódolva, 1=kiadás, 2=bevétel
  • a tranzakció során a pénzmozgás mennyisége (pozitív érték, 100..100000 Ft)

A tranzakciók az ügyfelek pénzmozgásait tartalmazzák. A tranzakciók listája N ügyfél esetén legyen 8*N méretű (ügyfelenként átlag 8 tranzakció). A tranzakciókat véletlen értékekkel kell feltölteni az alábbiak szerint:

  • első lépésben random módon válasszunk ki egy ügyfelet a listáról
  • a tranzakció-rekord ügyfél azonosítója legyen ezen ügyfél kódja
  • a tranzakció maradék három mezőjét véletlenszerű értékekkel töltsük fel

Ha elkészültünk a két listának a feltöltésével …

  • kérjünk be egy PIN kódot, és ha van ilyen ügyfelünk, akinek ennyi a pin kódja, írassuk ki a képernyőre az aktuális adatait (név, számlaegyenleg, azonosító kód), és a hozzá tartozó tranzakciókat is (a tranzakciókat táblázatos formában szeretném látni). Ha nincs ilyen ügyfelünk, akkor ezt írjuk ki, és kérjünk be új PIN kódot.
  • majd az alábbi kérdésekre adjuk meg a válaszokat:
    • van-e olyan ügyfelünk, akinek negatív az aktuális egyenlege (írjuk a nevüket/neveiket is) ha nincs ilyen ügyfelünk egy sem, akkor ezt írjuk ki.
    • hány olyan ügyfél van, akihez több mint 6 tranzakció kód tartozik (csak darabszám, lehet 0 is)
    • adjuk meg ügyfelenként a tárolt tranzakciók szerint mennyi pénz volt a bevételeinek, és a kiadásainak összege
    • mennyi pénze van az ügyfeleknek átlagban (az ügyfelek aktuális egyenlegeiből számolandó), várhatóan tört szám érték lesz.
    • melyik ügyfélnek (név) van a legtöbb pénze jelenleg a bankban. Ha a legtöbb pénz mondjuk 100.000 Ft, és több ügyfélnek is éppen ennyi van, akkor mindegyiknek írassuk ki a nevét.


Hernyák Zoltán
A lap eredeti címe: „http://wiki.ektf.hu/wiki/Mp2/gyak13
Nézetek
nincs sb_44.200.77.59 cikk