bevezető programozás feladatok bme (c nyelv)

81
Vizsga és ZH feladatok gyűjteménye Programozás alapjai I. tárgyból informatikusoknak Szerkesztő: Pohl László BME, Elektronikus Eszközök Tanszéke Budapest 2008

Upload: tamas-daniel-juhasz

Post on 16-Dec-2015

36 views

Category:

Documents


4 download

DESCRIPTION

Bevezető Programozás Feladatok BME

TRANSCRIPT

  • Vizsga s ZH feladatok gyjtemnye Programozs alapjai I.

    trgybl informatikusoknak

    Szerkeszt: Pohl Lszl

    BME, Elektronikus Eszkzk Tanszke Budapest 2008

  • 2

    Tartalomjegyzk TARTALOMJEGYZK ...................................................................................................................................... 2

    ELSZ ................................................................................................................................................................ 3

    HALLFEJES HIBK ........................................................................................................................................ 5

    BEUGR FELADATOK ..................................................................................................................................... 7

    1. ADATTPUSOK, OPERTOROK, CIKLUSSZERVEZS ........................................................................................... 72. LLAPOTGPEK ............................................................................................................................................... 83. TMBS PROGRAM .......................................................................................................................................... 84. FGGVNYRS ............................................................................................................................................. 105. DINAMIKUS TMB ......................................................................................................................................... 116. SZTRING ........................................................................................................................................................ 117. RENDEZS ..................................................................................................................................................... 128. FGGVNYPOINTER ....................................................................................................................................... 139. LISTA, FA ....................................................................................................................................................... 1410. FJL ............................................................................................................................................................ 18

    MAXIMUMRSZ FELADATOK..................................................................................................................... 19

    1. ZH S VISZGAFELADATOK ............................................................................................................................. 19

    MEGOLDSOK ................................................................................................................................................. 35

    BEUGR ............................................................................................................................................................ 35MAXIMUMRSZ ................................................................................................................................................. 60

  • 3

    Elsz

    A kvetkez oldalakon az elmlt vek sszes fellelt nagy ZH s vizsgafeladata megtallha-t, a beugr feladatok mindegyikhez kszlt mintamegolds is, a maximumrsz feladatoknak csak egy rszhez adunk megoldst. Javasoljuk, hogy oldjanak meg minl tbb feladatot nl-lan, legalbb a felt szmtgpbe berva, a mintamegoldsokhoz csak vgs esetben fordul-janak. Eredmnyes felkszlst kvnunk!

    A feladatok s megoldsok kidolgozsban kzremkdtt tbbek kztt Kohri Zsolt, Nagy Gergely, Pohl Lszl, Poppe Andrs, Szente-Varga Domonkos, Vitz Andrs s msok.

    Nagy ZH beugr tmakrei:

    1. Adattpusok, opertorok, ciklusszervezs. Jellegzetes feladatok a szmelmleti pldk: oszt, prm stb., tovbb a bitszint mveletek ismerett ignyl fela-datok: maszkols, biteltols, pl.: bitszmlls, paritsvizsglat, egyes bitek kimaszkolsa.

    2. llapotgp, egy- s tbbdimenzis tmbk, dinamikus tmbk, pointerek, fggvnyrs. Brmilyen egyszerbb szvegszrses llapotgpes feladat el-fordulhat, llapotgrfot vagy llapottblt rajzolni tudni kell. Dinamikus tmb felszabadtst tudni kell. Tudni kell fggvnyt rni, fggvnyrtket vissza-adni paramtersoron (pointerrel) vagy fggvnyrtkknt (returnnel). Elfor-dulhat olyan feladat, hogy fggvny tmbt kap, s a tmb elemei kzl ki kell vlogatni bizonyos tulajdonsgakat (pros szmokat, tlag alattiakat, egy paramterknt adott rtknl nagyobbakat stb.) Pointert visszaad fggv-nyek.

    3. Stringek, rendezs, keress: knyvtri sztringfggvnyek (strlen, strcat, strcmp, strcpy stb.) sajt megrsa; sztringek sszefslse betnknt, szavan-knt, mondatonknt stb.; bizonyos tulajdonsg sztringrszek trlse, pl. sz-kzk, kisbetk, nagybetk, szmok. Keress sztringen bell, rszsztring el-lltsa stb. Tudni kell rendezni, ismerni kell legalbb egy rendez algorit-must. (Fenn lehet a kzzel rott puskn, de tudni kell hasznlni).

    Vizsga beugr tmakrei:

    1. Adattpusok, opertorok, ciklusszervezs, llapotgpek, egy- s tbbdimenzis tmbk. Jellegzetes feladatok a szmelmleti pldk: oszt, prm stb., tovbb a bitszint mveletek ismerett ignyl feladatok: maszkols, biteltols, pl.: bitszmlls, paritsvizsglat, egyes bitek kimaszkolsa. Brmilyen egysze-rbb szvegszrses llapotgpes feladat elfordulhat, llapotgrfot vagy lla-pottblt rajzolni tudni kell. A tmb elemei kzl ki kell vlogatni bizonyos tulajdonsgakat (pros szmokat, tlag alattiakat, egy paramterknt adott r-tknl nagyobbakat stb.)

    2. Dinamikus tmbk, pointerek, fggvnyrs, stringek, rendezs, keress, hashing. Dinamikus tmb felszabadtst tudni kell. Tudni kell fggvnyt rni, fggvnyrtket visszaadni paramtersoron (pointerrel) vagy fggvnyrtk-knt (returnnel). Fggvny tmbt kap, pointert visszaad fggvnyek. Knyvtri sztringfggvnyek (strlen, strcat, strcmp, strcpy stb.) sajt megr-sa; sztringek sszefslse betnknt, szavanknt, mondatonknt stb.; bizo-nyos tulajdonsg sztringrszek trlse, pl. szkzk, kisbetk, nagybetk, szmok. Keress sztringen bell, rszsztring ellltsa stb. Tudni kell rendez-ni, ismerni kell legalbb a kzvetlen kivlasztsos, beszrsos, bubork s

  • 4

    gyorsrendez algoritmust. (Fenn lehet a kzzel rott puskn, de tudni kell hasznlni).

    3. Fggvnypointerek, rekurzi, lncolt s fss listk, binris s tbbg fk, binris s szveges fjlok. Tudni kell fggvnypointert fggvnyparamter-knt vagy tpusknt definilni, tadott fggvnyt meghvni, fggvnypointer tmbt kezelni. Lncolt egy- s ktirny listt pteni s lebontani, elemt be-szrni s trlni, strzsval elltott listt kezelni, listt bejrni, ft bontani s pteni, ft bejrni, fggetlenl attl, hogy hny ga van. Binris fjlokat megnyitni/bezrni/rni/olvasni, szveges fjlokat megnyitni/bezrni/rni/ ol-vasni.

  • 5

    Hallfejes hibk

    Az albbi hibk nagyon slyosak, a javttl fgg, hogy az egsz feladatra 0 pontot ad-e, vagy megkegyelmez, s csak a pontok felt vonja le:

    1. Inicializlatlan vltoz rtknek hasznlata

    Pl.: Rossz:

    int a; while(a

  • 6

    A tmb mrett konstanssal adjuk meg, a fenti megads nem definil egy tetszleges mre-t tmbt, C-ben nincs tetszleges mret tmb. Ha nem tudjuk, hny adatot kell eltrolnunk, akkor egyb adatszerkezetet hasznljunk, pldul listt vagy ft. Megjegyzend, hogy a beug-rban szerepl feladatoknl nagyon ritka az, amikor ismeretlen mennyisg adat rkezik, s azokat el is kell trolni. Ilyen ltalban csak a maximumrszben fordul el. Beugrnl teht nagyon alaposan gondoljuk meg, hogy megoldhat-e a feladat az adatok eltrolsa nlkl!

    5. Tmbmret megadsa paramterben, vltozknt

    Pl.:

    void fuggveny(int t[n]){ int i; for(i=0;i

  • 7

    Beugr feladatok

    1. Adattpusok, opertorok, ciklusszervezs

    1.1 rjon olyan programot C nyelven, mely kiszmolja s kirja az e3x-4sin(2x/29)+4x3-7x-8.0=0 egyenlet [0,1] interval-lumba es gykt.

    1.2 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy egsz szmrl eldnti, hogy tkletes szm-e! Az a

    tkletes szm, amely egyenl a nla kisebb oszti sszegvel. Pl. 6 = 1+2+3 28 = 1+2+4+7+14 Bemen paramter: a vizsgland egsz. Visszatrsi rtk: a vizsglat eredmnye, logikai rtk. Tkletes szm esetben ez IGAZ legyen.

    1.3 rjon C programot, amely bekr hrom pozitv szmot, s eldnti, hogy lehetnek-e egy hromszg oldalai! 1.4 rjon C programot, amely eldnti egy bekrt pozitv egsz szmrl, hogy prm-e! 1.5 rjon C programot, amely kirja a felhasznltl bekrt pozitv egsz szm prmtnyezs felbontst. 1.6 rjon olyan C fggvnyt, amely egy paramterknt tadott n pozitv egsz szmrl eldnti, hogy prmszm-e. Ha

    igen, akkor a fggvny visszatrsi rtke legyen logikai IGAZ, ha nem prmszm, akkor pedig a visszatrsi rtk legyen logikai HAMIS! (A fggvny nem kommuniklhat a felhasznlval, a klvilggal val adatforgalmat a paramterlistjn s a visszatrsi rtkn keresztl bonyoltja le.)

    1.7 rjon egy olyan C nyelv teljes programot, amely beolvas egy n pozitv egsz szmot (n

  • 8

    1.14 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy pozitv egsz szmot, s logikai-lag IGAZ-at vagy HAMIS-at jelent egsz rtkkel tr vissza. A visszatrsi rtk legyen IGAZ, ha a paramterknt kapott szmnak egyen s nmagn kvl mg pontosan kt pozitv egsz osztja van, s legyen HAMIS minden ms esetben! (Pl. 8-nak oszti 1, 2, 4, 8, azaz erre IGAZ-at ad a fggvny, de 10-re, melynek 1, 5, 10 az oszti, HAMIS-at.)

    1.15 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy eljel nlkli egsz szmot (n),

    s visszaadja az n. prmet! (Felttelezheti, hogy az n. prm brzolhat eljel nlkli egsszel.) Pl.: n=5 esetn visszaadott rtk 11, mert az els t prm: 2, 3, 5, 7, 11

    1.16 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy eljel nlkli egsz szmot (n),

    s visszaadja azt a legkisebb olyan egsz szmot, amely kett egsz hatvnya, s n nem nagyobb nla. Pldul ha n=7 => visszaad 8-at, n=128 => visszaad 128-at, n=513 => visszaad 1024-et.

    1.17 rjon olyan szabvnyos ANSI C programot, amely kirja az sszes olyan hromjegy szmot, amelynek a hrom

    szmjegye eltr egymstl! (pl. 142 j, 141 nem j, 012 nem j) 1.18 Ksztsen olyan szabvnyos ANSI C programot, amely bekr a felhasznltl kt pozitv egsz szmot, ellenrzi,

    hogy valban pozitv szmokat kapott-e, s ha nem, hibazenetet ad s kilp. Ha pozitv szmokat kapott, rja ki a kt szm kztt tallhat sszes prmet olyan formban, hogy a kirt szmok mindegyike 10 helyet foglaljon a kpernyn! Ha a szm ennl rvidebb, szkzkkel tltse fel a szm eltti res helyeket!

    1.19 Ksztsen olyan szabvnyos ANSI C programot, amely bekr a felhasznltl egy olyan nemnegatv egsz szmot,

    mely kettes szmrendszerben brzolva legfeljebb 31 bites! Ellenrizze, hogy valban ilyen szmot adott-e meg a felhaszn-l, s ha nem, lpjen ki a programbl hibazenettel! Ezutn szmolja meg, hogy hny 1-es bit van a szmban! Szorozza meg a beolvasott szmot kettvel, s ha az 1-es bitek szma pros volt, adjon hozz 1-et a kapott rtkhez! rja ki a vgeredmnyt!

    1.20 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kt pozitv egszet kap s visszatrsi r-

    tkvel megadja azt, hogy az ezen kt pozitv egsz ltal meghatrozott zrt intervallumban hny prmszm van. A fggvny csak a paramterein s a visszatrsi rtkn keresztl kommuniklhat a klvilggal, a szabvnyos bemenetet s kimenetet nem kezelheti. Trekedjen arra, hogy kdja tlthat legyen. Ha kell, definiljon tovbbi programszegmenseket.

    1.21 Ksztsen olyan szabvnyos ANSI C programot, amely bekr a felhasznltl egy pozitv egsz rtket, megfordtja

    a szm kettes szmrendszerbeli alakjnak bitmintjt, s kirja az gy kapott egsz szmot! Csak az eredeti szm rtkes bitjeit vegye figyelembe a fordtsnl! Pl.: ha a felhasznl 6-ot ad meg, akkor ennek 110 a kettes szmrendszerbeli alakja, megfordtva 011, azaz 3. Pl. 333 esetn a bitminta 101001101, ez megfordtva 101100101, azaz 357. A megoldshoz nem hasznlhat tmbt!

    1.22 rjon egy teljes C programot, amely megkeresi s a szabvnyos kimenetre rja azt a legnagyobb hromjegy szmot,

    amelynek szmjegysszege megegyezik a prmtnyezinek az sszegvel. (pl. 378=23337, ezek sszege 18, ami egyenl a jegyek sszegvel is.)

    1.23 Ksztsen egy olyan szabvnyos ANSI C programot, amely a szabvnyos bementrl beolvasott htjegy budapesti

    telefonszmot binrisan kdolt decimlis (BCD) alakra konvertlja, melyet egy eljel nlkli egszben trol! Felttelezzk, hogy az eljel nlkli egsz legalbb 32 bites. Pl. a bemen szm: 4631111, ennek BCD alakja minden tzes szmrendszerbe-li szmjegyet 4 biten trol, azaz 4,6,3,1,1,1,1 szmjegyek binrisan: 0100,0110,0011,0001,0001,0001,0001, azaz a BCD szm binris alakja 0100011000110001000100010001, ami decimlis alakban kirva 73601297. Ezt a szmot kell ellltani s kirni!

    2. llapotgpek

    2.1 rjon C programot, amely a standard inputrl rkez C forrsszveget gy msolja t a standard outputra, hogy a string konstansokbl a ++ (pluszplusz) karaktersorozatokat elhagyja. gyeljen arra, hogy a sztringben idzjelet \" (backslash idzjel) sorozattal lehet elhelyezni.

    2.2 Ksztsen olyan szabvnyos ANSI C programot, amely a szabvnyos bemenetrl (billentyzet) olvas be karaktereket

    sorvge jelig (\n)! A beolvasott karakterek kizrlag p, s vagy z betk lehetnek. Ha nem ilyen rkezik, adjon hibaze-netet s lpjen ki a programbl! Ha tbb egyforma bet rkezik egyms utn, csak egyet rjon ki a szabvnyos kimenetre (kperny)! Pl.: be: pzppzsssssspsz, ki: pzpzspsz. A megoldshoz hasznljon llapotgpet, rajzoljon llapotgrfot vagy lla-pottblt!

    3. Tmbs program

  • 9

    3.1 rjon C programot, amely statisztikt kszt a standard bemeneten olvasott szmjegykarakterekrl! A program szm-jegyenknt (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) rja ki, hogy melyik szmjegy hnyszor fordult el. A karaktereket a soremels karakte-rig olvassa! Nem csak szmjegyek fordulhatnak el, a tbbi karaktert hagyja figyelmen kvl!

  • 10

    4. Fggvnyrs

    4.1 rjon egy olyan C fggvnyt, amely paramterknt kapja egy henger tmrjnek (d) s magassgnak (h) az rtkt s ebbl kiszmtja a henger felsznt s ezt az rtket a fel paramter ltal megcmzett memriaterleten szolgltatja. Az elksztend fggvny prototpusa:

    void felszin(double d, double h, double *fel); rjon egy olyan C nyelv teljes programot, amely a felhasznltl bekrt adattal aktivlja fenti fggvnyt s kirja az

    eredmnyt a kpernyre. Az aktivlshoz hasznlja az albbi deklarcikat: void main() { double d, h, felsz; }

    4.2 rjon olyan szabvnyos ANSI C fggvnyt, amely a szabvnyos bemenetrl a file vgig rkez vals szmok kzl

    az utols 8 szm mrtani kzprtkt szolgltatja visszatrsi rtkknt! A szabvnyos bemenetrl a program csak szmokat kap, de elre nem ismert, hogy hny darabot. Ha 8 szmnl kevesebbet olvasna be a fggvny, a hinyz szmokat tekintse 1-nek. gyeljen arra, hogy a fggvny a lehet legegyszerbb legyen, s ne vgezzen felesleges adatmozgatsokat! Segtsg: n db szm mrtani kzept a kvetkez kplettel lehet kiszmolni:

    nnaaamean = ...21

    4.3 rjon C fggvnyt, amelyik megllaptja, hogy a paramterknt kapott n elem double elem tmb nvekven rende-

    zett-e. A fggvny paramterknt vegye t az elemek szmt (n) is. 4.4 rjon C fggvnyt, amely a szabvnyos bemenetrl olvas be egy szveget (fjlvge jelig), s megszmolja a szveg-

    ben lv * s # karaktereket. A szmols vgeztvel az eredmnyt a fggvny paramterlistjn adja vissza! 4.5 rjon olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy double tpus szmot (d), s egy egsz rt-

    ket (n). Adja vissza a paramterlistjn egsz szm formjban a szm egszrszt, valamint a trtrsznek n szmjegyt egsz szmknt. Pldul: bemen adat: d=3.14, n=4; visszaadott: 3 s 1400.

    4.6 Ksztsen fggvnyt, amely paramterknt kapja egy ellipszis kt tmrjt (a,b), s visszaadja azt a terlet, ami az

    ellipszis kr rajzolt tglalapbl marad az utn, hogy kivonjuk belle az ellipszis terlett. Tellipszi=ab/4, Ttglalap=ab.

    double terulet(double a, double b); 4.7 Egy fggvny prototpusa a kvetkez:

    int fordit(int ertek); A fggvny visszatrsi rtkknt azt az egsz szmot szolgltatja, amely a paramterknt kapott egsz rtk szmjegyeit

    fordtott sorrendben tartalmazza, s eljelt ellenkezjre fordtja. Pldul a printf(%d, %d,fordit(-1234),fordit(567)); kimenete: 4321, -765. Valstsa meg a fggvnyt szabvnyos C nyelven! Az int tpus rtk-tartomnyra vonatkozan semmifle felttelezssel nem lhet, csak abban lehet biztos, hogy a megfordtott szm is belefr az int tpusba!

    4.8 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely gy rja ki egy paramterknt tadott unsigned int t-

    pus egsz szm decimlis rtkt a szabvnyos kimenetre, hogy 3 szmjegyenknt tagolja azt egy-egy szkzzel. Pl. 1234567 kirsa: 1 234 567. A feladat megoldsa sorn az brzolhat legnagyobb egsz szm konkrt rtkre vonat-kozlag semmifle felttelezssel nem lhet, azt semmilyen elre definilt konstans rtkbl nem llapthatja meg!

    4.9 Ksztsen egy ANSI C fggvnyt, mely paramterknt kap egy egsz szmokbl ll tmbt, s egy egsz szmot, ami a tmb elemszma. A fggvny visszatrsi rtke legyen 1, ha a tmb elemei relatv prmek, 0, ha nem azok. Akkor relatv prmek, ha a szmok egyiknek sincs brmely msikkal kzs osztja. Trekedjen gyors megoldsra!

    4.10 rjon fggvnyt, amely paramterknt kap egy egszekbl ll, ktdimenzis, ngyzetes tmbt (egy nn-es mtri-

    xot) valamint annak mrett, s a visszatr egy logikai rtkkel, amely azt mondja meg, hogy a mtrix ftljban minden elem 0-e.

  • 11

    4.11 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy 12411956 elem, s egy 19561241 elem, double tpus elemeket tartalmaz ktdimenzis tmbt, s az els tmb transzponltjt a msodikba helyezi. A transzponls a sorok s oszlopok felcserlst jelenti, azaz ami az i. sor j. eleme volt, az a j. sor i. eleme lesz. A hinyosan megadott programra maximum a pontszm harmada adhat!

    Pl.:

    642531

    654321

    4.12 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy eljel nlkli egsz szmot, s 1-

    et ad vissza, ha a megadott szm eleme a Fibonacci sorozatnak, 0-t, ha nem. A Fibonacci sorozat els kt eleme 1, az n. eleme pedig az n-1. s n-2. elemnek sszege. A sorozat els nhny eleme a kvetkez: 1, 1, 2, 3, 5, 8, 13, 21, 34, Teht a sorozatnak eleme pl. a 13, de nem eleme a 15.

    4.13 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap kt, egsz rtkeket trol egydimen-

    zis tmbt (t1,t2)! A t1 tmbben egy ktdimenzis mtrix tallhat sorfolytonosan. A fggvny paramterknt tveszi a ktdimenzis mtrix x,y mrett (a kett szorzata adja a tmb mrett). Ugyancsak paramterknt kap egy x0, y0 s egy dx, dy egsz tpus rtkprt, s t2-be belemsolja a paramterknt kapott mtrix x0, y0 koordintn kezdd dx, dy mret almtrixt (az indexels 0,0-val kezddik).

    Pl. be: x=5, y=4, x0=2, y0=1, dx=3, dy=2, t=

    2019181716151413121110987654321

    azaz t[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

    ki: t2[]=

    1514131098 azaz {8,9,10,13,14,15}

    4.14 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja egy gmb vals rtk sugart (r),

    kiszmtja a gmb fellett s trfogatt, a felletet visszatrsi rtkknt adja, a trfogatot pedig paramterknt adja visz-

    sza! A gmb fellete 4pir2, trfogata 34

    pir3. Ne hasznlja a pow fggvnyt!

    5. Dinamikus tmb

    5.1 rjon olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy double rtkeket tartalmaz tmbt s a tmb elemszmt, meghatrozza a tmbben tallhat rtkek tlagt, megszmolja, hogy hny tlag alatti rtk van a tmb-ben, ltrehoz egy megfelel mret dinamikus tmbt s ebbe tmsolja az tlag alatti rtkeket. Adja vissza paramtersoron a dinamikus tmb mrett, valamint fggvnyrtkknt a dinamikus tmb cmt!

    6. Sztring

    6.1 rjon fggvnyt, mely kt sztringet kap a felhasznltl, s a msodik sztringet tmsolja az elsbe. A fggvny pro-totpusa legyen ez: void Copy(char cel[],char forras[]);

    6.2 Ksztsen osszefuz nev fggvnyt, mely paramterknt kap kt stringet, s az els vghez fzi a msodikat! A

    fggvny ms fggvnyt nem hvhat! 6.3 rjon C fggvnyt, amelyik megfordtja a paramterknt kapott, nullval (\0) lezrt karaktersorozatot (stringet) gy,

    hogy az visszafel legyen olvashat! A fggvny az eredmnyt a bemeneti adat helyn adja vissza! 6.4 Ksztsen C fggvnyt, amely paramterknt egy stringre mutat pointert s egy karaktert kap, megkeresi a

    sztringben a karakter els elfordulsi helyt, s visszatrsi rtkl egy erre mutat pointert ad vissza. Ha nem tallja, NULL pointert ad vissza (return NULL;)

    6.5 Ksztsen C fggvnyt, amely a paramterknt kapott sztringben minden kisbett nagybetre cserl!

  • 12

    6.6 Ksztsen fggvnyt, mely paramterknt kap hrom karaktertmbt, s az els kettben lv stringet sszefslve, azaz betnknt felvltva tmsolja a harmadikba. Pl. s1=abcde, s2=1234567, az eredmny: s3=a1b2c3d4e567. Ne felejtse el lezrni a stringet!

    6.7 rjon olyan szabvnyos ANSI C fggvnyt, amely tmsol egy sztringet egy msikba olymdon, hogy a msolatban

    az egymst kvet azonos karakterekbl csak egyet tart meg. A fggvny paramterknt kapja a sztringek cmt, s feltte-lezzk, hogy az eredmny-sztring alkalmas az adatok trolsra. A fggvny prototpusa a kvetkez:

    void spec_strcpy(char *source, char *destination); 6.8 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy paramterkn tvett sztringbl eltvoltja a szkz ka-

    raktereket! Pl. ha az tadott karaktertmb a Jobb ma egy verb, mint holnap egy tzok! sztringet tartalmazza, akkor a fgg-vny a sztringet Jobbmaegyverb,mintholnapegytzok!-ra mdostsa!

    6.9 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy stringet s egy karaktert, s a

    stringet eredeti helyn gy vltoztatja meg, hogy trli belle a megadott karakterrel megegyez karaktereket! Nem hasznl-hat segdtmbt! Pldul be: abrakadabra sikeres C vizsga s a, ki: brkdbr sikeres C vizsg

    6.10 rjon olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy sztringet, melyet gy alakt t, hogy trli

    belle a nagybetket! Pl.: be: Az EET a kedvenc-M!; ki: z a kedvenc-. Nem hasznlhat segdtmbt! 6.11 rjon olyan szabvnyos ANSI C fggvnyt, amely paramterl kap hrom karaktertmbt! Az els kt karakter-

    tmbben lv sztring tartalmt gy msolja t a harmadikba, hogy felvltva msol t egy-egy szt az elsbl ill. a msodik-bl! Minden sz, ami nem whitespace karakter. Pl.: be1: Nincs mint EET-n, be2: jobb, az tanulni!, ki: Nincs jobb, mint az EET-n tanulni!

    6.12 rjon egy olyan ANSI C fggvnyt, amely egy szablyos C sztring cmt, valamint egy karaktert kap paramterknt,

    s megkeresi a karakter legutols (legjobboldalibb) elfordulst a sztringben. A fggvny visszatrsi rtke a megtallt karakter indexe, ha a karakter nem szerepel a sztringben, akkor 1 legyen. Ne hasznljon knyvtri fggvnyeket!

    6.13 Adott a kvetkez fggvny prototpus:

    void dekodolo(char*cel,char*szamok,char*betuk);

    A fggvny a szamok tmbben egy kdolt zenetet kap paramterl, melyet a betuk tmb segtsgvel dekdol, s az

    eredmny stringet a cel tmbben helyezi el. A szamok tmb tartalma egy ktjegy decimlis szmok sorozatbl ll string. A ktjegy szmok a betuk tmbben lv karakterek indext jelentik. A szmprokat sem szkz, sem egyb karak-ter nem vlasztja el egymstl! Ksztse el a fggvny defincijt szabvnyos ANSI C nyelven! Ne felejtse el a cel stringet megfelelen lezrni!

    Pl.: szamok=00000602050302060400020100030607, betuk=EB SHIT! => cel=EET IS THE BEST!

    6.14 rjon olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap kt stringet, s megvizsglja, hogy az els

    string tartalmazza-e a msodikat! Ha igen, adja vissza a megtallt string cmt, ha nem, NULL pointert adjon vissza! Ms fggvnyt nem hvhat!

    6.15 rjon olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy sztringet, benne egy csak szmjegyeket

    tartalmaz telefonszmmal, tovbb paramterknt kap egy msik sztringet, melyben az eredmnyt kell eltrolni. A fggvny visszatrsi rtke egy eljel nlkli egsz rtk, melyben a krzetszmot kell visszaadni. A bemen telefonszm vagy tar-talmaz krzetszmot, vagy nem. Ha tartalmaz, akkor a szm els kt jegye 06, ezt kveti egy vagy kt szmjegy, a krzet-szm. A krzetszm lehet 1, vagy 20-99 kztti rtk. Ha a telefonszm nem tartalmaz krzetszmot, akkor a fggvny 0-t adjon vissza! A paramterknt kapott msodik (eredmny) sztringben adja vissza a krzetszmtl megfosztott telefonszmot! (Pl. be: 0614631111, vissza paramter: 4631111, vissza return: 1)

    7. Rendezs

    7.1 Ksztsen rendez nev fggvnyt, amely paramterknt kap egy stringet, melynek karaktereit nvekv sorrendbe ren-dezi! A fggvny ms fggvnyt nem hvhat!

    7.2 rjon C fggvnyt, amely egy 100-szor 100-as mret, double elemeket tartalmaz mtrixot sorfolytonosan rendez.

  • 13

    7.3 rjon C fggvnyt, amely a paramterknt kapott n elem vals tmbt egy msik, szintn n elem integer tmb alap-jn helyben rendez. A msodik tmb 0-tl n-1-ig tartalmazza az egsz szmokat. Ez hatrozza meg, hogy milyen sorrendben kell a vals tmbt rendezni. Teht ahol index[x] = 0, ott tmb[x] = max. Az rand fggvny prototpusa:

    void rendez(double tomb[], int index[], int n); 7.4 rjon C fggvnyt, amely sztringekre mutat pointerek tmbjt kapja paramterknt, s a sztringeket cskken sor-

    rendbe rendezi. 7.5 rjon C fggvnyt, mely sztringeket tartalmaz tmbt rendez. A tmbben trolt stringek maximlis hossza 80 karak-

    ter. a. beszrsos rendezssel nvekv sorrendbe b. beszrsos rendezssel cskken sorrendbe 7.6 rjon szabvnyos ANSI C fggvnyt, mely paramterknt kap egy

    typedef struct{int kulcs; double ertek;} elem;

    tpus elemekbl ll tmbt, valamint a tmb mrett, s sorba rendezi a tmb elemeit kulcs szerinti cskken sorrendbe. A rendezshez tetszleges algoritmus hasznlhat, de nem hasznlhatja a stdlib.h-ban deklarlt qsort() knyvtri fgg-vnyt!

    7.7 Adott a kvetkez tpusdefinci:

    typedef struct{double re,im;}komplex;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy komplex elemekbl ll tmbt, valamint a tmb elemsz-mt veszi t paramterknt, s rendezi a tmb elemeit re2+im2 norma szerinti cskken sorrendben. A tmb rendezshez felhasznlhatja az stdlib.h-ban deklarlt szabvnyos qsort fggvnyt, vagy rhat maga is sajt rendez kdot.

    7.8 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy stringet, melynek pros index

    karaktereit ASCII kd alapjn, nagysg szerinti nvekv sorrendbe rendezi az eredeti stringen bell. Nem hasznlhat se-gdtmbt! Pl. be: szeretem a c nyelvet ki: z r temeaecenlesvyt

    7.9 Ksztsen olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap egy int elemeket tartalmaz tmbt s egy

    eljel nlkli egsz rtket (n)! A tmbben szmprok tallhatk, n rtk a szmprok szmt jelenti, vagyis a tmb mrete 2n. Rendezze sorba a szmprokat a szmprok els tagjnak rtke szerinti nvekv sorrendbe! Pl.: be: 4, -6, 2, 10, 3, 0, 1, 9; ki: 1, 9, 2, 10, 3, 0, 4, -6. Itt n=4.

    7.10 Ksztsen egy olyan C fggvnyt, amely egy x, y, z vals rtkeket tartalmaz struktrkbl ll, paramterknt t-

    adott tmb elemeit az origtl val tvolsg szerint nvekv sorba rendezi! Az x, y, z rtkek egy pont koordinti derksz-g koordintarendszerben. Definilja a szksges struktratpust is!

    8. Fggvnypointer

    8.1 rjon C fggvnyt, amely a paramterknt kapott double f1(double), s double f2(double) fggvnyek klnbsgt tblzatos formban kirja a standard outputra a szintn paramterknt kapott [a,b] zrt intervallumban e lpskzzel, s visszaadja a legkisebb klnbsg rtket.

    8.2 rjon ANSI C fggvnyt, amely paramterknt kap egy vals, egyvltozs matematikai fggvnyre mutat pointert,

    egy intervallum kt hatrt s egy harmadik vals szmot, ami a felbontst (lpskz) adja meg a fggvny numerikus integ-rlshoz. A fggvny visszatrsi rtke a paramterknt kapott fggvny integrlja legyen az adott hatrok kztt, az adott felbontssal. Tetszleges numerikus integrlsi algoritmust hasznlhat.

    8.3 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja egy double paramter, double visz-

    szatrsi rtk fggvny cmt (f), valamint hrom double tpus rtket (a, b, dx), s visszaadja a fggvny [a,b] zrt intervallumon felvett maximumt. A maximumot gy hatrozza meg, hogy vgigjrja az [a,b] intervallumot dx osztskz-zel, s minden lpsben megvizsglja a fggvny rtkt. Ahol a fggvny rtke a legnagyobb, azt tekintjk maximumnak. Ha a paramtertads rossz, de a fggvny trzse hibtlan, 4 pont jr. (Az f fggvnypointer hasznlata: y=f(x);, mintha egyszer fggvnyhvs lenne. (Az is.))

  • 14

    9. Lista, fa

    9.1 Adottak a kvetkez defincik:

    typedef struct bf{ int adat; struct bf *bmut, *jmut; } bifa, *pbifa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza, hogy egy ilyen bifa tpus elemekbl ll

    binris fban hny olyan csompont van, amelynek csak egy gyermeke van. Az adatszerkezet "vgt" a megfelel mutat NULL rtke jelzi. A fggvny bemen paramtere a fa gykerre mutat pointer, visszatrsi rtke a fenti mdon meghat-rozott rtk legyen!

    9.2 Egy n irnyba elgaz fa brzolshoz az albbi adatstruktrt definiljuk:

    typedef struct nf { double adat; unsigned n; /* elgazsok szma: 0 vagy pozitv egsz */ struct nf **agak; double value; } nfa, *pnfa; Ha 0 az elgazsok szma, n rtke 0 s agak ertke NULL. Ha n>0, akkor agak[i]!=NULL, ahol 0

  • 15

    9.6 Adottak a kvetkez defincik: typedef struct bf { double ertek; struct bf *bmut, *jmut; } bifa, *pbifa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza az ilyen elemekbl ll binris fban trolt r-

    tkek sszegt. Az adatszerkezet "vgt" a megfelel mutat NULL rtke jelzi. A fggvny bemen paramtere a fa gyke-rre mutat pointer, visszatrsi rtke a fenti mdon meghatrozott rtk legyen! Vlasszon megfelel paramtereket! Tre-kedjen gyors megoldsra!

    9.7 Adottak a kvetkez defincik: typedef struct qf { int adat; struct qf *mut1, *mut2, *mut3, *mut4; } quadfa, *pquadfa; Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza, hogy egy ilyen quadfa tpus elemekbl ll

    kavdrlis (ngyg) fban hny olyan csompont van, amelynek pontosan ngy gyermeke van. Az adatszerkezet "vgt" a megfelel mutat NULL rtke jelzi. A fggvny bemen paramtere a fa gykerre mutat pointer, visszatrsi rtke a fenti mdon meghatrozott rtk legyen! Nem hasznlhat globlis vltozt!

    9.8 Adottak a kvetkez defincik: typedef struct bf { int adat; struct bf *bmut, *kmut, *jmut; } trifa, *ptrifa; Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza, hogy egy ilyen trifa tpus elemekbl ll

    fa vgpontjainak a szmt. Vgpontnak azokat a csompontokat nevezzk, amelyeknek egy gyermeke sincs (azaz nem indul belle egy g sem). A fggvny bemen paramtere a fa gykerre mutat pointer, visszatrsi rtke a fenti mdon megha-trozott rtk legyen! Nem hasznlhat globlis vltozt!

    9.9 Adottak a kvetkez defincik:

    typedef struct bf { double ertek; struct bf *bmut, *jmut; } bifa, *pbifa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely a szabvnyos kimenetre kirja az ilyen elemekbl ll binris

    fa adott szintjn lv elemek rtkt! A gykrelem az 1. szinten van, gyerekei a 2. szinten, stb. A fggvny egyik bemen paramterben adjuk t a kirand szint szmt, egy msik paramtere pedig a fa gykerre mutat. Az adatszerkezet "vgt" a megfelel mutat NULL rtke jelzi. Nem hasznlhat globlis vltozt! Trekedjen gyors megoldsra!

    9.10 Adottak a kvetkez defincik: typedef struct bf { double ertek; struct bf *bmut, *jmut; } bifa, *pbifa; rjon egy olyan szabvnyos ANSI C fggvnyt, mely bemen paramterknt egy ilyen bifa tpus elemekbl ll fa

    gykerre mutat pointert, valamint egy zrt intervallumot kap, s visszatrsi rtkl adja a fa azon csompontjainak sz-mt, melyek ertek adattagja a megadott zrt intervallumba esik! A fggvny nem hasznlhat globlis vagy statikus vlto-zkat! Az adatszerkezet "vgt" a megfelel mutat NULL rtke jelzi. Trekedjen gyors megoldsra!

  • 16

    9.11 Adottak a kvetkez defincik: typedef struct nf { int adat; int n; struct nf **mut; } nfa, *pnfa; Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza egy ilyen nfa tpus elemekbl ll n-g fa

    maximlis mlysgt. Egy csompontrl kiindul gak szmt (azaz a mut tmb mrett) az n mez rtke adja meg, mut[i] a csompontbl kiindul i-edik gra mutat. Ha mut[i] rtke NULL, akkor abban az irnyban "vge" az adat-szerkezetnek. A fggvny bemen paramtere a fa gykerre mutat pointer, visszatrsi rtke a fenti mdon meghatro-zott rtk legyen! Nem hasznlhat globlis vltozt!

    9.12 rjon C fggvnyt mely paramterknt kapja egy binris fa gykrelemnek cmt, valamint kt vals szmot, a-t s

    b-t! A fa elemei a kvetkez tpusak: typedef struct nf { int adat; int n; struct nf **mut; } nfa, *pnfa; A fa nv szerint rendezett. A fggvny rja ki ABC sorrendben azoknak a neveit a fbl, akiknek az tlaga az [a,b] zrt

    intervallumba esik. 9.13 Egy vrosnak olyan felpts a csatornarendszere, hogy minden csompontban ktfel gazik el, gy egy binris f-

    val modellezhet. A fban minden elemnek van egy unsigned tpus adatmezje, amely megadja az elz csomponttl az aktulisig tart csatornaszakasz hosszt mterben s van egy msik double tpus adatmezje, amely megadja ezen csatorna-szakasz keresztmetszett ngyzetmterben. A csatornt egy rads kvetkeztben elnttte a vz. Definiljon alkalmas C struktrt a csatornarendszert ler binris fa brzolsra! rjon egy olyan C fggvnyt, amely paramterknt kapja a binris fa gykr elemre mutat pointert, s megmondja, hogy hny kbmter vizet kell kiszivattyzni a rendszerbl!

    9.14 Adott a kvetkez definci: typedef struct mf { double adat; unsigned m; struct mf **p; } magufa, *pmagufa; Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza, egy ilyen magufa tpus elemekbl ll fa n-

    edik szintjn tallhat adat-ok sszegt! Egy csompont p mezje egy m elem dinamikus tmbre mutat, amelyben a cso-mpont gyerekeire mutat pointereket troljuk. Ha egy elemnek nincs gyereke, p NULL pointer. A fggvny bemen para-mtere a fa gykerre mutat pointer, valamint n, azaz a keresett szint. Visszatrsi rtke az n-edik szinten trolt adatok sszege legyen! Nem hasznlhat globlis vltozt!

    9.15 Adott a kvetkez definci:

    typedef struct trifa { struct trifa *mutb, *mutk, *mutj; long adat; } TriFa, *PTriFa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza egy ilyen TriFa tpus elemekbl ll fa

    mlysgt. A fggvny egyetlen bemen paramtere a fa gykerre mutat pointer legyen, a visszatrsi rtke pedig a fa mlysgt megad eljel nlkli egsz szm. Globlis vltozt nem hasznlhat.

  • 17

    9.16 Adott a kvetkez tpusdefinci:

    typedef struct melon{long dinnye; struct melon *left,*right;}fa,*pfa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy fa elemekbl ll binris ft vesz t paramterknt, s visszatrsi rtkknt megadja, hogy a fa levlelemeiben hny dinnye tallhat. Levlelem az az elem, amelynek nincs gyermekeleme, azaz a left s right pointer egyarnt NULL rtk. A fggvny visszatrsi rtke teht a levlelemekben tallhat dinnye tagvltozk sszege.

    9.17 Adott a kvetkez tpusdefinci:

    typedef struct fa{ unsigned kulcs; char szo[50]; struct fa *bal,*kozep,*jobb; }trifa,*ptrifa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy trifa elemekbl ll hromg ft vesz t paramter-

    knt. A hromg fa kulcs szerint rendezett: a bal gakon a gykrelemnl kisebb kulcs, a kzps gakon a gykrelem-mel megegyez kulcs, a jobb gakon a gykrelemnl nagyobb kulcs elemek tallhatk A fggvny rja a szabvnyos kimenetre kulcs szerint nvekv sorrendben azon elemek szo adattagjt, amelyek kulcsa pros szm! Azonos kulcs ele-mek esetben a fban a gykrhez legkzelebbi elem kirsval kezdje, s a legtvolabbi fel haladjon! Ha nem nvekv sorrendben rja ki, de a megolds amgy j, max. 4 pontot kaphat. Ha valamelyik g nem ltezik, a megfelel pointer rtke NULL.

    9.18 Adott a kvetkez tpusdefinci:

    typedef struct list{ unsigned kulcs; char szo[50]; struct list *bal,*jobb; }elem,*pelem;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy elem tpus elemekbl ll dupln lncolt lista els

    elemre mutat pointert (p) s egy eljel nlkli egsz rtket (k) vesz t paramterknt, s kirja azon listaelemek szo adat-tagjt, amelyek utn olyan elem kvetkezik, melyek kulcs adattagja k-val egyenl.

    9.19 rjon fggvnyt, amely az albbi struktrbl felpl rendezetlen lncolt listt megrendezi tetszleges mdszerrel,

    cskken sorrendben, az a mez szerint. typedef struct _e { int a; struct _e *n, *p; } e;

    9.20 Adott a kvetkez tpusdefinci: typedef struct lala{ long pont; struct lala * next; }lista; rjon olyan szabvnyos ANSI C fggvnyt, amely paramterl kap egy lista elemekbl felptett egyszeresen lncolt listt! A listban oldalhosszakat trolunk a, b, c, a, b, c, sorrendben. A fggvny szmolja meg, hogy hny olyan hossz-tri van, ahol az rtkek lehetnek egy hromszg oldalai (brmely kt oldal hossza nagyobb a harmadiknl), s ezt az rtket adja vissza a fggvny! A lista vgt a next pointer NULL rtke jelzi. Ha a lista elemeinek szma nem oszthat hrommal, azaz az utols hossz-tri nem teljes, a fggvny adjon vissza -1-et!

    9.21 Ksztsen egy olyan C fggvnyt, amely paramterknt kapja egy egyszeresen lncolt lista kezdelemnek cmt! A listaelemek egy-egy vals rtket trolnak. Definilja a lista ltrehozshoz szksges adattpust is! A fggvny adja vissza-trsi rtkknt a lista szigoran monoton cskken szakaszainak szmt! 9.22 Egy telefonknyvi adatokat tartalmaz, nv szerint rendezett binris fa brzolshoz az albbi adatstruktrt definil-juk:

  • 18

    typedef struct bf { char *nev,*szam; struct bf *bal,*jobb; } bfa, *pbfa;

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt veszi t a fa gykernek cmt, s kirja az sszes Nagy vezetknev szemlyt telefonszmostul ABC sorrendben! A Nagyt vezetknev szemly nem Nagy vezetk-nev szemly!

    10. Fjl

    10.1 rjon olyan szabvnyos ANSI C programot, amely a szoveg.txt nev szvegfjl utols 8 sort rja ki fordtott sorrendben. Egy sor hossza maximum 1000 karakter lehet.

    10.2 A koordi.dat nev binris fjl struct{double x,y;}; felpts struktrkat tartalmaz. rjon programot, amely kirja a

    leghosszabb vektor koordintit! A fjlt csak egyszer olvashatja! 10.3 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap kt stringet, mint fjlnevet; az els

    fjt binris olvassra, a msodikat binris rsra nyitja meg, s tmsolja az els fjlt a msodikba, majd bezrja a fjlokat.

  • 19

    Maximumrsz feladatok

    1. ZH s viszgafeladatok (mindkettben lehetnek ilyenek)

    1.1 rjon olyan egy olyan C nyelv teljes programot, amely a szabvnyos bemenetrl rkez vals szmok kzl az utol-

    s 8 szm mrtani kzprtkt szolgltatja visszatrsi rtkknt! A szabvnyos bemenetrl a program csak szmokat kap, de elre nem ismert, hogy hny darabot. Ha 8 szmnl kevesebbet olvasna be a fggvny, a hinyz szmokat tekintse 1-nek. A szmok vgt a 0.0 rtk beolvassa jelzi. gyeljen arra, hogy a fggvny a lehet legegyszerbb legyen, s ne vgezzen felesleges adatmozgatsokat!

    1.2 rjon olyan maximum keres fggvnyt (8 pont), amely paramterknt kapja egy tmb (y) elemeit s az aktulis da-

    rabszmt (n), megkeresi a tmb legkisebb elemt. Cm szerint tadott paramtereiben (min_elem) szolgltassa magt a megtallt legnagyobb tmbelemet s visszatrsi rtkknt szolgltassa annak indext! A megolds sorn hasznlja az albbi deklarcikat:

    typdef int *tomb; int min_keres(tomb y, int n, int *min_elem); 1.3 rjon egy olyan teljes C programot (7 pont), amely a felhasznltl bekri a tmb maximlis mrett, ltrehozza azt s

    feltlti a felhasznltl bekrt adatokkal, majd a fenti fggvny aktivizlsval megllaptja a legkisebb tmbelemet s azt az indexvel egytt kirja a kpernyre. A tmbelemek beolvassa addig trtnjk, amg a tmb be nem telik vagy 0-t nem ad a felhasznl tmbelemknt. A program visszatrskor szabadtsa fel az ltala lefoglalt memrit!

    1.4 Adott a typedef int tomb[100]; tpus s egy ilyen tpus t tmb, vletlen rtkekkel teljesen feltltve. r-

    jon egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja a fenti t tmbt s azt a kvetkez mdon rende-zi: t[0] 1. legkisebb t[99] 2. legkisebb t[1] 3. legkisebb t[98] 4. legkisebb ... stb.

    Az eljrs csak helyben rendezheti a tmbt; msik, segdtmbt vagy dinamikusan foglalt trterletet nem hasznlhat.

    1.5 A standard inputon elre nem ismert szm (x,y) koordintaprt olvasunk. Az egyes vals szmrtkeket whitespace karakterek hatroljk. rjon olyan C programot, amely kirja az egyes koordintapontok tvolsgt az sszes pont, mint pont-rendszer slypontjtl mrve. Feltehet, hogy az adatok hibtlanok (helyes formtum, pros szm vals szm). A program file-okat nem hasznlhat. Az esetlegesen dinamkusan lefoglalt memrit szabadtsa fel!

    A slypont xsp koordintja gy szmolhat (azonos tmeg pontok esetn): nxxn

    iisp /

    1=

    = , ahol n a pontok szma.

    1.6 rjon egy olyan mondatvizsgalo nev C fggvnyt, amelyben a szabvnyos bemenetrl olvassuk a karaktereket, ehhez hasznljuk a getchar() fggvnyt. Figyelje az adatfolyam vgt jelent EOF-ot! A mondatokat tpusonknt szmllja meg, azaz kln a kijelent mondatokat, a felkilt mondatokat s a krd mondatokat, amelyeket a rendre a . (pont), a ! (felklt jel) s ? (krdjel) zr le. (A mondatok tbbi karaktert a vizsglat sorn figyelmen kvl hagyjuk.) A kijelent s a krd mondatokat szmll vltozkat a paramterlistn, a felkilt mondatokat szmll vltozt rtkt pedig a return-nel, visszatrsi rtkknt adja vissza!

    int mondatvizsgalo(int *kijelento, int *kerdo);

    Egsztse ki a fenti fggvnyt egy teljes C programm egy olyan main fggvnnyel, amelyben aktivlja a mondatvizsgalo fggvnyt az albbiakban deklarlt vltozkkal s a vizsglat eredmnyt a szabvnyos kimenetre nyomtatja!

    void main() { int kij,ker,fel; 1.7 Ksztsen egy olyan teljes ANSI C programot, amely meghatrozza, hogy a szabvnyos bemeneten beolvasott sz-

    vegben hny karakteres a leghosszabb sor s kirja ennek a sornak a hosszt, valamint kirja azt is, hogy ez hnyadik sor volt. A sorokat 1-tl sorszmozzuk.

  • 20

    1.8 Ksztsen egy olyan teljes ANSI C programot, amely beolvassa s kirja a szabvnyos bemeneti llomny (stdin) tartalmt, de gy, hogy kt sz kztt pontosan egy szkzt hagy csak. A szavakat az eredeti szvegben tetszleges szm szkz vlaszthatja el. Sznak tekintnk minden olyan karaktersort, amelyet tetszleges szm whitespace karakter hatrol. A TAB karaktert ('\t') 8 darab space karakternek kell tekinteni. Az jsor jel ('\n') a kirs szempontjbl nem tekinten-d space karakternek; a szveg sorokra tagolsa maradjon az eredeti!

    1.9 rjon szabvnyos ANSI C programot, mely egy ruhz belptet rendszert kezeli a kvetkez feltteleknek megfele-len: Az rk brmikor belphetnek az ruhzba, de az utols r csak akkor lphet ki, ha rajta kvl senki sincs mr bent. A fnkk brmikor bejhetnek, amikor van bent r, s brmikor elmehetnek. Az alkalmazottak csak akkor lphetnek be, ha van benn fnk s r, de csak akkor lphetnek ki, ha kilpsk utn

    legalbb tizedannyi alkalmazott marad benn, mint ahny gyfl. Az gyfelek csak akkor lphetnek be, ha belpsk utn az gyfelek sszes szma nem haladja meg a benn lv al-

    kalmazottak tzszerest, s brmikor kilphetnek. A be- illetve kilpsi szndkot a standard inputrl rkez karakterpr jelzi, az els karakter: O: r, F: fnk, A: alkalmazott, U: gyfl; a msodik karakter + vagy -, ha az illet be- ill. kilpni szeretne. Felttelezheti, hogy nem rkezik ms a bemene-ten, csak a megadott prosok. A program a kvetkez ngy szveg valamelyikt rja ki: BELPHET, NEM LPHET BE, KILPHET, NEM LPHET KI.

    1.10 rjon szabvnyos ANSI C fggvnyt, amely meghatrozza a paramterknt kapott double visszatrsi rtk, egy-vltozs, double paramter fggvny minimumt a szintn paramterknt kapott [A,B] intervallumban! A minimum kere-sst egy paramterknt adott lpskzzel vgezze! A fggvny fggvnyrtkknt adja vissza a megtallt minimum helyt.

    1.11 n egy optikai karakterfelismer programot fejleszt csapat tagjaknt feladatknt kapja egy fggvny elksztst. A fggvny deklarcija albb lthat. Paramterek: a kep egydimenzis, sor*osz mret tmbben tallhat a beolvasott kp, a tmb elemei a kppontok. A kppontok elrendezse a kvetkez: elszr jn a kp els sornak osz darab kppontja, majd a msodik sor osz darab kppontja, s gy tovbb. Minden kppont 0 s 255 kztti rtket vehet fel: a 0 teljesen feke-te, a 255 teljesen fehr, a kett kztt klnfle szrkernyalatok tallhatk. gy tekintjk, hogy egy adott kppontsorban akkor van szveg, ha a kppontok legalbb 2%-a stt, azaz rtke 0 s 127 kztt van. A fggvny a) paramterknt adja vissza a szoveg pointer ltal mutatott vltozban, hogy a szveg egy sora tlagosan hny kppont magas, b) a sorkoz segtsgvel, hogy a szveg sorai kztti tvolsg tlagosan hny kppont, c) visszatrsi rtkknt pedig, hogy a kpen hny sornyi szveg lthat. Az els szvegsor eltti, s az utols szvegsor utni szvegmentes terletet ne vegye figyelembe a sorok kzti tvolsg kiszmtsnl! unsigned sorszam(unsigned kep[], unsigned sor, unsigned osz, unsigned * szoveg, unsigned * sorkoz);

    1.12 Ksztsen programot, mely a standard bemenetrl (billentyzetrl) rkez szveget jelenti meg a standard kimene-ten (kpernyn) olyan formban, hogy ha egy sz nem fr el az adott sorban, akkor az egsz szt a kvetkez sorba rja ki, teht a szavakat nem vghatja kett. A kpernyn egy sor 80 karakter hossz. A szvegben minden sz rvidebb 80 karakter-nl. Sznak szmt minden, ami nem whitespace karakter (szkz, tabultor, soremels).

    1.13 Egy szveg tpus llomnyban az irodalmi hivatkozsokat szgletes zrjelbe tett egsz szmok jelzik pl: [131]. A szvegben ms clra is alkalmaznak szgletes zrjeleket, de ekkor a zrjelet mindig megelzi egy backslash karakter pl: \[ vagy \].

    Tervezzen szabvnyos ANSI C fggvnyt, amely beolvassa egy megnyitott szveges llomnybl a soron kvetkez irodalmi hivatkozs azonostszmt. Definilja a fggvnyt gy, hogy az adja vissza a beolvasott azonostt, mint egy egsz szmot s jelezze, ha mr nincs tbb irodalmi hivatkozs az llomnyban! A megnyitott llomny pointert paramterknt vegye t. Definilja a fggvny paramtereit, s magyarzza meg dntst! A feladat megoldshoz tervezzen llapotgpet, amit llapottmeneti grffal, vagy llapottblval adjon meg! Valstsa meg a fggvnyt! Plda a bemen formtumra: Remek olvasmny a Winetou c. m [12]. Ebben \[szmos\] remek trtnetet olvashatunk. Ajnlhatk mg a[81][82] mvek is.

    1.14 Egy autszerviz szmtgpe minden megbzsrl egy-egy sort r a SZERVIZ.TXT fjlba. Egy sor a kvetkez ada-

    tokat tartalmazza: RENDSZM : 6 karakter TULAJDONOS NEVE : 40 karakter FORG. ENG. SZMA : 8 karakter DTUM : 11 karakter, (2006.06.19.) SSZEG : 6 karakter (egsz szm)

    rjon C programot, amely a SZERVIZ.TXT fjl alapjn nvsorban kirja azoknak az auttulajdonosoknak a nevt, akik az tlagosnl tbbszr javttattk 2006 februrjban autjukat. A fjlt csak egyszer olvashatja be! Hasznljon dinamikus adat-szerkezetet!

  • 21

    1.15 Ksztsen egy olyan szabvnyos ANSI C programot, amely a szabvnyos bemenetn egy hibtlan, szabvnyos Pas-cal program szvegt fogadja, s kln-kln meghatrozza, hogy hny olyan kommentrt tartalmaz ez a forrsllomny, amelyet a (* *), illetve a { } karakterek hatrolnak. Felttelezheti, hogy a szveg nem tartalmaz "vegyes", azaz (* }, illetve { *) karakterek ltal hatrolt kommentrokat. Felttelezheti, hogy nincsenek egymsba gyazott megjegyzsek. A Pascal nyelvben a sztringkonstansokat az aposztrof karakter hatrolja. Ezekben tetszleges karaktersorozat lehet. sszetett kifejezsek felrsmdja, fggvny- ill. eljrshvs a Pascal-ban hasonl a C-ben megszokottakhoz. A * opertor a Pascal-ban a szorzs jele, nincs egyoperandus alakja. A Pascal nyelv egyb szintaktikai szablyaira vonatkoz ismeret nem szks-ges a feladat megoldshoz.

    1.16 rjon programot, mely a standard bemenetrl rkez szvegben minden kisbett nagybetre cserl, az eredmnyt a standard kimenetre (kperny) rja. A []-ek kztt ll szveget vltozatlan formban rja ki (itt teht nem alaktja a kisbet-ket naggy), a szveg vgt EOF jelzi. A zrjelek egymsba gyazhatk, teht pl.: be: abc de14 x[un1[z3]k2]rs5a => ki: ABC DE14 X[un1[z3]k2]RS5A.

    1.17 Adott a typedef int tomb[100]; tpus s egy ilyen tpus t tmb, vletlen rtkekkel teljesen feltltve. rjon egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja a fenti t tmbt s azt a kvetkez mdon ren-dezi: t[1] 1. legnagyobb t[99] 2. legnagyobb t[2] 3. legnagyobb t[98] 4. legnagyobb ... stb.

    Az eljrs csak helyben rendezheti a tmbt; msik, segdtmbt vagy dinamikusan foglalt trterletet nem hasznlhat.

    1.18 Egy hzaspr pontosan ugyanannyi figyermeket szeretne, mint lnyt. Elhatrozzk, hogy addig vllalnak jabb gyereket, amg ez nem teljesl, de legfeljebb M gyerekk lesz. Ksztsen olyan szabvnyos ANSI C programot, amely N ilyen hzaspr esete alapjn meghatrozza, hogy tlagosan hny gyerekk lesz s hny szzalkuknak sikerl elrni az azonos fi-lny szmot. N s M a program parancs-sor paramtereknt az opercis rendszerben megadott bemeneti adat, s feltesszk, hogy a fik s a lnyok szletsi valsznsge azonos. Hasznlhatja az fejlcfile-ban deklarlt int ran-dom(int num) vletlen szm genertor fggvnyt, amely minden meghvsa alkalmval egy-egy j, 0 s num-1 kz es, egyenletes eloszls vletlen rtket ad..

    1.19 Ksztsen egy olyan teljes ANSI C programot, amely beolvassa s kirja a szabvnyos bemeneti llomny (stdin) tartalmt, de gy, hogy kt sz kz pontosan csak egy space karatert r. A szavakat az eredeti szvegben tetszleges szm szkz vlaszthatja el. Szkznek tekintjk tetszleges szm whitespace karakter (space karakter, TAB kerakter, jsor jel) tetszleges hosszsg sorozatt. Teht sznak tekintnk minden olyan karaktersort, amelyet tetszleges szm whitespace karakter hatrol. A TAB karaktert ('\t') 8 darab space karakternek kell tekinteni. Az jsor jel ('\n') a kirs szempontj-bl nem tekintend space karakternek; a szveg sorokra tagolsa maradjon az eredeti!

    1.20 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely gy rja ki egy paramterknt tadott unsigned int tpus egsz szm decimlis rtkt a szabvnyos kimenetre, hogy 3 szmjegyenkt tagolja azt egy-egy szkzzel. Pl. 1234567 kirsa: 1 234 567. A feladat megoldsa sorn az brzolhat legnagyobb egsz szm konkrt rtkre vonat-kozlag semmifle felttelezssel nem lhet, azt semmilyen elre definilt konstans rtkbl nem llapthatja meg!

    1.21 Ksztsen egy olyan szabvnyos ANSI C programot, amely a szabvnyos bementrl beolvasott angol nyelv sz-vegben tallhat nagybetk elfordulsi gyakorisgrl statisztikt kszt. A statisztikt a szabvnyos kimenetre listzza ki az elfordulsok szmnak nvekv sorrendjben a kvetkezkppen: bet, elfordulsok szma, relatv gyakorisg a szveg sszes karakterre vettve, relatv gyakorisg a nagybetk sszes elfordulsra vettve. Ha egy bet egyszer sem fordult el a szvegben, akkor az a listn ne szerepeljen! Pldul:

    E 46 0.032 0.12 A 32 0.022 0.08 ... Definiljon alkalmas adatstruktrkat a feladat hatkony megoldshoz s magyarzza meg azt! Az optimlis adatstruk-

    tra-vlasztst s a hozz tartoz magyarzatot 2 ponttal honorljuk.

    1.22 Ksztsen egy olyan teljes ANSI C programot, amely beolvas a szabvnyos bemenetrl legfeljebb 2000 nevet, ame-lyekrl tudjuk, hogy egyikk sem hosszabb 30 karakternl, s mindegyik kln sorban van, majd kirja azokat nvsorban. A program rja ki azt is, hogy a rendezs sorn konkrtan hny sszehasonltst vgzett. A neveket csak helyben rendezheti! Adja meg rendezsi mdszere nevt s a rendezshez szksges sszehasonltsok maximlis szmt is. (A sztringmveletekhez hasznlja a fejlc file-ban deklarlt szabvnyos ANSI C sztringkezel fggvnyeket.

  • 22

    1.23 rjon egy olyan szabvnyos ANSI C programot, amely a szabvnyos bemenetrl beolvas egy teljes sort s eldnti, hogy a beolvasott szveg palindrom-e. Palindromnak hvjuk azt a szveget, amely visszafel olvasva is ugyanaz, pl. "Gza, kk az g." vagy "Indul a grg aludni.". A beolvasott szveg kirtkelsekor nem szmtanak az rsjelek, illetve a white-space karakterek. A szvegben esetleg elfordul kttag magyar mssalhangzkat egymst kvet fggetlen karakterekknt kell tekinteni. A magyar kezetes betket (,,, stb.) is betnek kell tekinteni, ennek elmulasztsa esetn maximum 6 pont adhat a feladatra. Figyeljen a kis- s nagybetkre is!

    1.24 Egy egybknt hibtlan, szabvnyos ANSI C programot egy olyan billentyzeten gpeltek be, amelyen egyes speci-lis karakterek, amelyek ltfontossgak egy C programban, nem mkdtek. Ezek a karakterek: [ ] { }. Hogy mgis be lehessen rni a C programot, a fenti karaktereket helyettest karaktert, illetve karakterszekvencikat hasznltak. rjon egy olyan szabvnyos ANSI C programot, amely ezeket a helyettest karaktereket lecserli a C-ben definilt szabvnyos speci-lis karakterekre az albbiak szerint: Helyettest karakterek: (. .) (* *) Szabvnyos karakterek: [ ] { } Teht pl. a (. sorozatot [-re kell cserlni. A feldolgozand szveg a szabvnyos bementen rkezik, a feldolgozott szveget (teht a szabvnyos szintaktikj C programkdot) a szabvnyos kimenetre rja ki. A feldolgozand szveg semmiflekppen nem fr el a szmtgp memrijban (sem a RAM-ban, sem a diszken). A feldolgozand szveg vgt az jelzi, ha az EOF szimblummal jellt eljeles egsz szm rtket olvassuk be. A szabvnyos bemenetrl rkez karakterek az stdio.h fejlc llomnyban deklarlt int getchar() fggvnnyel olvashatk. A szabvnyos kimenetre a putchar(int) alak fggvnnyel lehet karaktereket rni. Definljon a program mkdshez szksges adattpusokat! A feldolgozand programok kommentrokat s sztringkonstansokat nem tartalmaz-nak.

    1.25 rjon egy olyan szabvnyos ANSI C fggvnyt, amely meghatrozza sin(x) rtkt az albbi kplet segtsgvel, 7 tizedesjegy pontossggal!

    ...!9!7!5!3

    sin9753 xxxxxx ++=

    A kvnt pontossgot akkor rjk el, ha egy j tag hozzvtelvel a kvetkez sszefggs teljesl: 71 10

  • 23

    1.30 rjon egy olyan szabvnyos ANSI C programot, amely a szabvnyos bemeneten kapott szveget gy rja a szabv-

    nyos kimenetre, hogy minden float szt double szra cserl, ha az nem idzjelek kztt tallhat! A szavak betk-bl, szmjegyekbl s alhzs jelekbl llhatnak. Figyeljen arra, hogy pl. az floatnum azonost nem cserlend doublenum azonostra! A feladatot llapotgppel oldja meg, ellenkez esetben maximum 5 pontot kaphat!

    1.31 Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kap kt stringet, melyek ASCII kd ra-cionlis szmokat tartalmaznak. Ezek els karaktere ktelezen az eljel (+ vagy -), s lehet bennk tizedespont vagy tizedesvessz (mindkt forma megengedett), de nem ktelez tizedesjelnek lennie, ha egsz szmrl van sz. A fggvny foglaljon dinamikusan karaktertmbt, melybe biztosan belefr a kt szm kivonsnak eredmnye, ezutn vgezze el a kivonst, az eredmnyt az j tmbben trolja! Az eredmnybe tizedespontot tegyen, ha az nem egsz szm! A kivons ered-mnye teljesen pontos legyen! (7p) Egsztse ki teljes programm a fggvnyt! Hozzon ltre kt 200 elem karaktertmbt, ebbe krjen a felhasznltl szmokat, szmolja ki a klnbsgket a fggvny segtsgvel, az eredmnyt rja ki a standard kimenetre, a fggvny ltal lefoglalt dinamikus memrit szabadtsa fel! Pl. be: +9.111111 s -81,355, ki: +90.466111

    1.32 rjon egy olyan szabvnyos ANSI C programot, amely a forgalomszmllst segti! A program a szabvnyos beme-netrl olvas be nemnegatv egsz szmokat, mg 0-t nem kap. A szmok klnbz tpus gpjrmveket jelentenek; ssze-sen 30 fle jrm van, 1-tl 30-ig jellve a tpusukat. A program szmolja meg, hogy hny konvoj haladt el az ton a szml-ls idtartama alatt, s a szmlls utn rja ki azokat a jrmtpusokat, amelybl legalbb egy konvoj rkezett! Konvojnak azt nevezzk, amikor legalbb 3 azonos tpus jrm haladt el egyms utn. A feladatot llapotgp segtsgvel oldja meg! Nem llapotgpes megolds esetn maximum 5 pontot kaphat. Nem jr pont, ha minden gpjrmtpushoz kln llapotot akar rendelni.

    1.33 Ksztsen olyan szabvnyos ANSI C fggvnyt, amely ngy eljel nlkli egsz rtket kap paramterknt: a, b, c, d; kiszmolja a/b+c/d mvelet eredmnyt (kt trt sszegt), majd az eredmnyt trzsalak trt (e/f) alaktja (amely mr nem egyszersthet tovbb)! gyeljen arra, hogy b*d szorzatot nem szmthatja ki, mert az eredmny nem biztos, hogy elfr brmilyen egsz szm tpusban, viszont egyszersts utn e/f alakban f mr meghatrozhat szorzssal.

    1.34 Adott az albbi tpusdefinci:

    typedef struct { char nev[101],neptun[7]; int kzh[4],nzh; } hallgato;

    A fenti defincit felhasznlva ksztsen egy olyan teljes, szabvnyos ANSI C programot, amely megkrdezi a felhaszn-

    lt, hogy maximum hny hallgat adataival kvn dolgozni, majd az albbi fggvnyeket felhasznlva bekri az adatokat, s sorba rendezve kirja az eredmnyt!

    Ksztsen fggvnyt, amely a szabvnyos bemenetrl (alapesetben: billentyzet) beolvassa a folyamatosan rkez, max. 100 karakteres neveket, max. 6 karakteres NEPTUN kdokat s a hozzjuk tartoz kis ZH jegyeket s nagy ZH pontszmo-kat! Ha egy nv els karaktere az '_' karakter (alhzs karakter), akkor vge a neveknek, s mr az alhzssal kezdd nevet sem kell feldolgozni.

    Ksztsen fggvnyt, amely NEPTUN kd szerinti nvekv sorrendben kilistzza a szabvnyos kimeneten (alapesetben: a kpernyn) azokat a hallgatkat, akik alrst szereztek, azaz kt legjobb kis ZH-juk tlaga legalbb 2.0, s nagy ZH-juk legalbb 15 pont.

    A NEPTUN kdok sszehasonltsra hasznlhatja a knyvtri az int strcmp(char *s1, char *s2) fgg-vnyt, a sorba rendezshez pedig a void qsort(void*t, int size, int n, int (*fp)(void*,void*)) fggvnyt, de sajt maga is megrhatja a szksges kdot. Az strcmp visszatrsi rtke negatv, 0 vagy pozitv a param-terknt tadott sztrigek kztti relci szerint.

    1.35 Ksztsen egy olyan teljes, szabvnyos ANSI C programot, amely egy, a felhasznl ltal megadott, 1 s 99999 k-ztti termszetes szmot kpes kirni betvel! 2000-ig minden szmot egyberunk, 2000 fltt az ezres s ezer alatti rsz kz ktjelet kell tenni. Pldk: 625: hatszazhuszonot 44: negyvennegy 1975: ezerkilencszazhetvenot 8000: nyolcezer 23470: huszonharomezer-nyolcszazhetven

  • 24

    1.36 Egy kozmetikai zletben vendgek hasznlnak kabinokat. A kabinokban klnbz hosszsg kezelsek folytatha-tk, egy nap sszesen legfeljebb 100 darab. A kezelseknek van kezd idpontjuk s egy hosszuk. A kezelsek csak minden negyedrban kezdhetk meg. A nyitva tartst reprezentl nyit s zr idpontokat a programban megadott konstansok troljk. Ksztsen egy olyan teljes, szabvnyos ANSI C programot, amely az rkez vendg szmra kilistzza az aznap mg szaba-don maradt kezdidpontokat annak fggvnyben, hogy milyen hossz kezelsre kvnjuk a kabint lefoglalni. A program az idpontokat percben (0 s 1440 kztt) trolja, az idpontok kirst a megszokott :PP formban vgezze. A kivlasztott idpont foglalst trolja el, kvetkez foglalsokat ne engedjen gy felvenni, hogy az elzekkel tfeds jjjn ltre!

    1.37 Ksztsen fggvnyt C nyelven, amely paramterknt kap egy struktratmbt (t), ezen tmb elemeinek a szmt (n), egy sztringet (s) s egy egsz szmot (a)! A struktrk egy 50 elem karaktertmbt (uzi), valamint egy fggvnypointert (fv) tartalmaznak. A fggvnypointer void visszatrsi tpus, egy darab egsz rtket vr fggvnyre mutat. A struktra-tmb elemei az uzi sztring szerint ABC sorba rendezettek. A fggvny binris keresssel keresse meg az s sztringet a t tmb uzi sztringjei kztt, s hvja meg a hozz tartoz fggvnyt a paramterknt kapott a egsz rtkkel! Ha az s sztring nincs a tmbben, ne tegyen semmit!

    1.38 Ksztsen SMS dekdol fggvnyt szabvnyos ANSI C nyelven! A fggvny egy forrs- s egy clsztringet kap paramterknt. A forrssztringben az SMS szvege billentylenyoms szerint van kdolva. Az egyes billentykhz a kvet-kez karakterek tartoznak:

    1 2 3 4 5 6 7 8 9 * 0 # ./,/-/?/!/

    1

    A/B/C/2

    D/E/F/3

    G/H/I/4

    J/K/L/5

    M/N/O/6

    P/Q/R/S/7

    T/U/V/8

    W/X/Y/Z/9

    kisbe-t/nagybet/*

    +/0

    sz-kz/#

    A forrsszvegben a billentyrtk annyiszor ismtldik, ahnyadik a hozz tartoz listban a kldeni kvnt karakter. Pl. az 1 jelentse . (pont), az 1111 jelentse ?. Az egyes dekdoland karakterek szorosan egymst kvetik, kivve, ha azonos csoportbl szrmaznak, ebben az esetben szkz vlasztja el ket egymstl. A szveg karakterei alaprtelmezs szerint nagybetk. Pl. be: 2*9999#**33 338#*8266777799993355#6334#6444663444 41 1 1 ki: Az EET tanszek meg mindig

  • 25

    2. Viszgafeladatok (nagy ZH-ban nem szerepelnek)

    2.1 rjon C programot, amely a) Beolvassa az adatok.dat binris fjl tartalmt. A fjl data tpus struktrkbl ll. A struktrk a kvetkez felpts-

    ek:

    typedef struct{ int x,y; double value; }data;

    Az adatok trolshoz lncolt listt, vagy ms dinamikus adatszerkezetet hasznljon.

    b) Kirja a beolvasott adatokat az adatok.txt nev szveges fjlba, mgpedig a beolvass sorrendjvel ELLENTTES

    sorrendben. A fjl els sora a kvetkez szveget tartalmazza (ezt is ki kell rni!):

    "Ez az adatok.dat fordtott sorrendben"

    Teht a fjl a kvetkez felpts legyen: Ez az adatok.dat fordtott sorrendben x y value x y value x y value x y value

    Ahol a msodik sor az adatok.dat utols elemnek adatai, a harmadik sor az adatok.dat utols eltti elemnek adatai, stb. 2.2 Olyan kezetes magyar nyelv szveget tartalmaz 7 bites ASCI karaktereket tartalmaz text file-okat szeretnnk

    "olvashatv" tenni, amelyekben az kezetes betk kdolsa a kvetkez: a1 , hasonlan az -re s az -re is, o1 o2 o3 , hasonlan az u-ra is, valamint az sszes nagybetre is.

    Ksztsen egy olyan szabvnyos ANSI C programot, amely parancssor paramterknt kapja egy kdolt szveget tartal-

    maz llomny nevt s annak a file-nak a nevt, amelybe a program kirja ugyanezt a szveget, de 8 bites extended ASCII kdkkal rt kezetes magyar szveg formjban. Az egyes kezetes betket a kvetkez karakterkonstansok formjban adhatja meg: '', '', '', stb.

    2.3 Adott az albbi fa struktra, amely a Morse-ABC szimblumait trolja. rjon olyan szabvnyos ANSI C fggvnyt, amely ennek segtsgvel a szabvnyos bementerl rkez pont, ktjel s szkzk alkotta karakterfolyamot, mint Morse-zenetet ezen dekdol fa segtsgvel "megfejti". Az egyes Morse-szimblumokat egy space karakter vlasztja el egyms-tl. A szavak vgt legalbb kt szkz karakter jelzi. A fa "gykere" res. Felttelezheti, hogy a dekdol fa helyese van kitltve. Ha egy ndusban az egyik rsz-fa hinyzik, a megfelel pointer mez rtke NULL. Az adatok vgt EOF jelzi. Pl. a ... --- ... karaktersorozatraz SOS karaktersorozatot kell szolgltatni

    typedef struct m { char ertek; struct m *ti, *ta; } morse; morse dekod;

    Az fggvny feje pedig:

    void dekodolo(morse *gyoker);

  • 26

    2.4 rjon olyan C fggvnyt, amely statisztikt kszt arrl, hogy a szabvnyos bemenetrl rkez szveges (ASCII) l-lomnyban az egyes szavak hossza milyen gyakorisggal fordul el, azaz az 1, 2, 3, stb. karakteres szavak hnyszor fordul-nak el a szvegben. A klnbz hosszsgu szavak elfordulsainak a szmt nvekv szhosszak szerinti sorrendben rja ki tblzatosan, a szabvnyos kimenetre. A beolvasand szavak hosszt nem ismerjk, azok brmilyen hosszsgak lehet-nek. Sznak tekinthet minden olyan karaktersor, amelyet tetszleges szm un. whitespace (szkz, jsor jel vagy tabultor) hatrol. A megoldshoz definiljon alkalmas adatstruktrt s magyarzza meg azt! A fggvny nem hasznlhat globlis adatokat, a hv programmal csak paramterlistjn keresztl kommuniklhat. A fggvny a lehet legegyszerbb legyen! gyeljen arra, hogy a fggvnybl val kilpskor minden dinamikusan lefoglalt memriaterletet szabadtson fel!

    2.5 Hasznlja az albbi tpusdefincit:

    typedef struct k{ double x,y; double atlag; struct k *kov; } sz, *psz;

    rjon egy olyan SzamokOlvasasa azonostj C fggvnyt, amelyben beolvassa a struktra kt adatt (x,y) a szabvnyos

    bemenetrl. Ezek az adatok csak pozitv vals szmok lehetnek, az x vltoz zrus rtke lltja le az adatok tovbbi beolva-sst. Hozza ltre a struktra dinamikus elemt, majd tltse fel a beolvasott adatokkal, szmtsa ki a struktra atlag mezejt, ezutn a dinamikusan ltrejtt struktra elemeit lncoljuk a memriba. Ha mr nincs tbb adat, a fggvny trjen vissza s visszatrsi rtkknt a felptett lista els elemre mutat pointert szolgltassa. A fggvny deklarcija:

    psz SzamokOlvasasa(void);

    rjon egy olyan MaxAtlag azonostj C fggvnyt, amely a paramterlistjn megkapott els elemre mutat pointer (e) felhasznlsval megkeresi a fenti lncolt lista a legnagyobb tlagot tartalmaz elemt. Visszatrsi rtkknt ezt az tlagr-tket szolgltassa a fggvny. Az ehhez az tlaghoz tartoz kt adatot pedig a paramterlistn keresztl adja vissz. A fgg-vny deklarcija:

    double MaxAtlag(psz e, double *xx, double *yy);

    A fenti fggvnyeket aktivizlja az albbiakban deklarlt vltozkkal, nyomtassa ki a szabvnyos kimenetre a MaxAtlag ltal szolgltatott rtkeket s vgl a lnc ltal lefoglalt memriaterleteket szabadtsa fel.

    void main(void) { double maxatlag, adat1, adat2;

    psz elso, p, p1;

    2.6 A szablytalankod autsok hibapontjait a kvetkez tpus elemekbl ll szveges adatllomnyban tartjk nyil-vn:

    typedef struct { char nev[50]; char jogsi[15]; /* jogositvany sorszma */ int pont; /* ... tovbbi adatok */ } elem;

    A szksges vltozsokrl is ilyen elemekbl ll file kszl, melyben jabb szablytalansg esetn a pontszm pozitv,

    illetve ha elvl egy szablytalansg, akkor negatv. A file-ok a jogostvnyok szma szerint nvekv sorrendben rendezet-tek. Minden file-ban az egyes struktra mezk egy-egy kln sorban szerepelnek. Ksztsen olyan teljes ANSI C programot, mely az elz llapot s a vltozsok alapjn elkszti az aktualizlt adatllomnyt! A program els parancssor paramtere az elz llapotot tartalmaz file neve, a msodik parancssor paramtere pedig a vltozsokat tartalmaz allomny neve. Az aktualizlt llapottal rja fell az elz llapotot. Lehet, hogy valakinek nem volt mg nyilvntartott szablytalansga. Ha valakinek a pontszma nullra cskken, akkor trlni kell a nyilvntartsbl.

    2.7 Ksztsen egy olyan teljes ANSI C programot, amely parancssori paramterknt kap egy fjlnevet! A fjlban egy BMP formtum, 256 szn kp van. Szmolja meg, hogy melyik sznbl hny szerepel a kpen! A binris fjl formtuma a kvetkez: 1078 bjt (unsigned char) fejlc, majd a fjl vgig minden bjt egy-egy kppont szne. A fjl hosszt nem ismer-jk, csak azt tudjuk biztosan, hogy egyik sznbl sincs tbb, mint amennyi egy int tpus vltozba belefr. rja ki azon sz-nek sorszmt, s azt, hogy mennyi van a kpen az adott sznbl, amelyekbl van legalbb egy a kpen; a legnagyobb sor-szmtl a legkisebb fel haladjon a kirsban!

  • 27

    2.8 rjon egy olyan szabvnyos ANSI C programot, amely a szabvnyos bemenetrl rkez szveget a kvetkezk szerint dolgozza fel: A beolvasott szveg hossza ismeretlen, de egy sz maximum 20 karakter hossz. A szveg szavakbl, s azokat el-

    vlaszt karakterekbl ll, minden sz betkbl s/vagy szmjegyekbl ll. Minden egyb karakter elvlaszt ka-rakter. A szveg vgt EOF jelzi. A feladat elvgzsre alkalmas dinamikus adatszerkezeteket hasznljon!

    Vlassza szt a szvegben a legalbb 10 karakter hossz, s az ennl rvidebb szavakat! rja ki a legalbb 10 karakter hossz szavakat ABC sorba rendezve! rja ki a 10 karakternl rvidebb szavakat a berkezs sorrendjvel ellenttes sorrendben!

    2.9 Egy autszerviz szmtgpe minden megbzsrl egy-egy sort r a SZERVIZ.TXT fjlba. Egy sor a kvetkez ada-

    tokat tartalmazza: RENDSZM : 6 karakter TULAJDONOS NEVE : 40 karakter FORG. ENG. SZMA : 8 karakter DTUM : 11 karakter, (2006.06.19.) SSZEG : 6 karakter (egsz szm)

    rjon C programot, amely a SZERVIZ.TXT fjl alapjn nvsorban kirja azoknak az auttulajdonosoknak a nevt, akik az tlagosnl tbbszr javttattk 2006 februrjban autjukat. A fjlt csak egyszer olvashatja be! Hasznljon dinamikus adat-szerkezetet!

    2.10 Egy lncolt lista a kvetkez elemeket tartalmazza:

    struct lanc_st { int kulcs; float terulet; struct lanc_st *A; };

    A lista nagysg szerint nvekven rendezett. rjon C fggvnyt, amely a paramterknt kapott lncolt listn megduplzza

    (ismtelten felveszi) az sszes, a szintn paramterknt kapott kulcsnak (egsz szm) megfelel elemet! Definilja a fgg-vnyt! gyeljen arra, hogy az eljrs akkor is jl mkdjn, ha a lnc res! A lnc maradjon rendezett.

    2.11 Ksztsen egy olyan teljes ANSI C programot, amely a szabvnyos bemenetrl rkez szveget dolgozza fel a k-vetkezkppen: a szveget szavakra bontja, s a szavakat binris fban trolja. A binris fa csompontjai a szksges pointe-rek mellett teht eltroljk a szt, valamint a sz hosszt, s elfordulsnak szmt (minden szt egyszer trolunk). A fa maximum 19 karakteres szavakat trolhat. Ha egy sz tbb, mint 19 karakter, akkor a 20. karaktertl kezdve hagyja figyel-men kvl a tbbi karaktert! A sz betkbl ll, minden ms karakter elvlaszt karakternek tekintend. Miutn beolvasta a szveget, rja ki a szavakat ABC sorrendben, feltntetve a szavak hosszt s elfordulsuk szmt is!

    2.12 Ksztsen szabvnyos ANSI C programot, amely els parancssor paramtereknt kap egy 1 s 9 kztti egsz rt-ket, majd a msodik parancssor paramtere ltal megadott nev szveges fjl tartalmt gy rja t a szabvnyos kimenetre, hogy a specifiklt egsz rtknl rvidebb szavakat a sz hossznak megfelel pont (.) sorozattal helyettesti. Szavaknak tekintjk a betkbl ll sorozatokat. Szt hatrol minden nem bet. A fjlt csak egyszer olvashatja be, s nem hasznlhat munka fjlt.

    2.13 Egy szveges file kzilabda jtkosok vekre bontott eredmnyessgi adatait tartalmazza soronknt az albbi tabu-llt formban:

    vezetknv(10 kar.) keresztnv(10 kar.) klub(6 kar.) szletsi v(4 kar.) idny(4 kar) glok szma(4 kar) Az egyes mezk kztt egy-egy szkz is tallhat. Egy jtkos minden idnyhez tallhat egy ilyen sor a file-ban.

    Semmilyen rendezettsget nem ttelezhetnk fel a file-rl. rjon egy teljes, szabvnyos ANSI C programot, amely a fenti file feldolgozsa utn kirja a 2004-es idnyben szerepelt 20 legfiatalabb jtkos albbi adatait: neve, klubja, 2004-ben szerzett glok szma, sszes gljainak szma. A kirs legyen a 2004-es idny eredmnyessge szerint cskkenen rendezve. A program mkdjn helyesen akkor is, ha 20-nl kevesebb jtkos volt az adatbzisban. A program a file nevt parancssor paramterknt kapja meg. (Tovbbi segdfggvny(eke)t is kszthet s hasznlhat a program megvalstshoz.) A feldolgozand file nevt a program els parancssor paramtere tar-talmazza.

  • 28

    2.14 Egy szveges fjl kzilabda jtkosok vekre bontott eredmnyessgi adatait tartalmazza soronknt az albbi tabu-llt formban:

    vezetknv(10 kar.) keresztnv(10 kar.) klub(6 kar.) szletsi v(4 kar.) idny(4 kar) glok szma(4 kar) Az egyes mezk kztt egy-egy szkz is tallhat. Egy jtkos minden idnyhez tallhat egy ilyen sor a fjlban, de

    nem minden jtkos jtszott minden idnyben. Semmilyen rendezettsget nem ttelezhetnk fel a fjlrl. rjon egy teljes, szabvnyos ANSI C programot, amely a fenti fjl feldolgozsa utn kirja a 2006-os idnyben szerepelt 20 legfiatalabb jtkos albbi adatait: neve, klubja, 2006-ban szerzett glok szma, sszes gljainak szma. A kirs letkor szerint nvekv sorrendben, az azonos szletsi v jtkosok esetben pedig nvsor szerint nvekven rendezve trtnjen (legfeljebb 20 jtkos adatait rja ki). A program mkdjn helyesen akkor is, ha 20-nl kevesebb jtkos volt az adatbzis-ban. (Tovbbi segdfggvny(eke)t is kszthet s hasznlhat a program megvalstshoz.) A fjlban szerepl jtkosok nem mindegyike jtszott 2006-ban. gyeljen arra, hogy az sszes glok szma akkor is helyes legyen, ha a fjlban a jtkos valamely nem 2006-os szezonhoz tartoz adatsora elbb van, mint a 2006-os szezonhoz tartoz. A fjl mrett nem tudjuk. A fjlt csak egyszer olvashatja be. Nem hasznlhatja a realloc fggvnyt. Definiljon alkalmas adatszerkezeteket! A feldogozand fjl nevt a program els parancssor paramtere tartalmazza. Programja kerlje a feles-leges adatmozgatsokat!

    2.15 Tudjuk, hogy egy egszekbl ll, hossz file-ban kevs klnbz rtk fordul el. Az sszes, a file-ban elfordul adat egyesvel nem, a klnbz rtkek azonban egytt is elfrnek a memriban. Ksztsen egy szabvnyos ANSI C prog-ramot, amely kirja a szabvnyos outputra, hogy mely rtk hnyszor fordult el! Elszr rja ki rtk szerint cskken sorrendben azokat az elemeket, melyek pratlan szmszor fordultak el, utna rja ki az rtk a fjlban val els elfordu-lsa szerinti sorrendben azokat az elemeket, amelyek pros szmszor fordultak el! A file-t csak egyszer olvashatja vgig. A file egy szveges llomny, amelyben az egyes int rtkeket egymstl egy vagy tbb whitespace karakter vlasztja el egymstl. Nem hasznlhatja a realloc fggvnyt. A beolvasott rtkeket csak egy pldnyban trolhatja! A file nevt a program els parancssor paramterknt kapja meg. A program a kirs vgeztvel szabadtsa fel az ltala dinamikusan lefog-lalt memriaterleteket! (Javasolt megolds: rendezett binris fa.)

    2.16 rjon egy olyan szabvnyos ANSI C programot, amely a szabvnyos bemenetrl rkez angol nyelv szveget a kvetkezk szerint rja ki soronknt a szabvnyos kimenetre:

    Ha egy sor els karaktere magnhangz, akkor a kirsi sorrend a beolvassi sorrenddel egyezzen meg. Ha egy sor els karaktere mssalhangz, akkor az illet sort megfordtva rja ki.

    Az stdin-rl rkez sorok hosszt nem ismerjk, de azt tudjuk, hogy egy sor tartalma elfr akr a veremben (a stack-

    en), akr norml adatmemriban. A sorok els karaktere biztosan bet.

    2.17 Adottak a kvetkez defincik: typedef struct jj { char nev[50]; char sorszam [15]; /* jogositvany sorszma */ int pont; /* ... tovbbi adatok */ } jogsi; rjon egy olyan szabvnyos ANSI C fggvnyt, amely egy tetszleges mret jogsi tpus tmbt tetszleges adatme-

    zje szerint cskken vagy nvekv sorrendbe tudja rendezni a gyorsrendez algoritmus segtsgvel. Sajt implementcit kell ksztenie, nem hasznlhatja a knyvtri qsort() fggvnyt. Definiljon tovbbi tpusokat s alkalmas formlis paramterekt pl. ahhoz, hogy a rendezs szempontjt a fggvny aktulis bemen paramterei szabhassk meg.

  • 29

    2.18 Adott egy binris fa, amely az albbi elemekbl pl fel:

    typedef struct _kodfejto { char kar; struct _kodfejto *bal; struct _kodfejto *jobb; } Kodfejto;

    A fban rejtettek el egy kdszt, amit csak az tallhat meg, aki rendelkezik a megfelel trkppel. Szerencsre neknk

    pont megvan ez a trkp, ami egy lncolt lista alakjban tallhat meg a memriban. A trkp brzolsra a kvetkez adatszerkezetet hasznltuk:

    typedef enum {bal, jobb} Irany; typedef struct _terkep { Irany irany; struct _terkep *kov; } Terkep;

    A trkp egyes elemei azt mondjk meg, hogy a gykrtl kiindulva az aktulis csompontbl merre haladjunk to-

    vbb. A kdsz egyes karakterei sorban a megltogatott elemekben szerepl kar mezkbl llnak ssze. rjon egy olyan ANSI C fggvnyt, amely paramterknt kapja a kdfa gykrelemre, valamint a trkp els elemre mutat pointert s visszaadja a megfejtett kdszt tartalmaz stringre mutat pointert. A kdszrl tudjuk, hogy nem hosszabb 40 karakternl.

    2.19 Ksztsen egy olyan teljes, szabvnyos ANSI C programot, amely a szabvnyos bemenetrl (alapesetben: billenty-zet) folyamatosan rkz, max. 100 karakteres neveket beolvassa s megllaptja az sszes beolvasott nv tlagos hosszs-gt s azt, hogy a leghosszabb nv hny karakterrel hosszabb, mint az tlag. Nem tudjuk, hogy hny nevet kell beolvasnunk. Az egyes neveket, mint teljes sztringeket a scanf("%s",nevtomb) fggvnyhvssal olvashatja be, ahol nevtomb egy, a nevek trolsra alkalmas mret karaktertmb. Ha egy nv els karaktere az '_' karakter (alhzs karakter), akkor vge a neveknek s mr ezt az alhzssal kezdd nevet sem kell feldolgozni.

    2.20 Adottak az albbi tpusdefincik:

    typedef char nevtomb[100+1]; typedef struct{ nevtomb nev; int jegy; } nevlista, *nevlistamut;

    A fentieket felhasznlva ksztsen egy olyan teljes, szabvnyos ANSI C programot, amely elbb megkrdezi a felhaszn-

    lt, hogy maximum hny listaelemmel kvn dolgozni. Ezt kveten a szabvnyos bemenetrl (alapesetben: billentyzet) beolvassa a folyamatosan rkez, max. 100 karakteres neveket s a hozzjuk tartoz jegy rtkeket, s ABC szerint nvekv sorrendben kilistzza a szabvnyos kimeneten (alapesetben: a kpernyn) a neveket s a hozzjuk tartoz jegy rtkeket. Nem tudjuk, hogy hny nevet kell beolvasnunk, de azt tudjuk, hogy maximum annyit, amennyit a felhasznl krt, s elegend memria ll rendelkezsre ahhoz, hogy az sszes nevet s nevenknt mg sizeof(int) darab byte-ot eltrol-junk. Ha egy nv els karaktere az '_' karakter (alhzs karakter), akkor vge a neveknek s mr az alhzssal kezdd nevet sem kell feldolgozni. A nevek sszehasonltsra hasznlhatja a knyvtri az int strcmp(char *s1, char *s2) fggvnyt, a sorba rendezshez pedig a void qsort(void*t, int size, int n, int (*fp)(void*,void*)) fggvnyt, de sajt maga is megrhatja a szksges kdot. Az strcmp visszatrsi rtke nega-tv, 0 vagy pozitv a paramterknt tadott sztrigek kztti relci szerint. Ha egy nv tbbszr fordul el, akkor is csak egyszer szerepeljen a listban.

    2.21 Adott kt, egsz adatokbl ll szveges file (be1.txt s be2.txt), amelyek mindegyike kln-kln nvekv sor-rendbe rendezett adatokat tartalmaz. Ksztsen egy olyan szabvnyos ANSI C programot, amely ezen egsz rtkeket tovb-bi kt file-ba vlogatja. Azon szmok, amelyek mindkt bemeneti file-ban szerepelnek, kerljenek az els kimeneti llo-mnyba (kozos.txt). Azok a szmok pedig, amelyek csak az egyik bemeneti file-ban szerepelnek, kerljenek a msodik ki-meneti llomnyba (kulon.txt). A fjlokat csak egyszer olvashatja be, s nem hasznlhat munka fjlt. Az sszes adat biztosan nem fr el a memriban.

  • 30

    2.22 Adottak az albbi tpusdefincik:

    typedef char nevtomb[100+1]; typedef struct nl{ nevtomb nev; int jegy; struct nl *mut; } nevlista, *nevlistamut;

    A fentieket felhasznlva ksztsen egy olyan teljes, szabvnyos ANSI C programot, mely a szabvnyos bemenetrl (alap-

    esetben: billentyzet) beolvassa a folyamatosan rkez, max. 100 karakteres neveket s a hozzjuk tartoz jegy rtkeket, s ABC szerint nvekv sorrendben kilistzza a szabvnyos kimeneten (alapesetben: a kpernyn) a neveket s a hozzjuk tartoz jegy rtkeket. Nem tudjuk, hogy hny nevet kell beolvasnunk, de azt tudjuk, hogy elegend memria ll rendel-kezsre ahhoz, hogy az sszes beolvasott adatot eltroljunk. Ha egy nv els karaktere az '_' karakter (alhzs karakter), akkor vge a neveknek s mr az alhzssal kezdd nevet sem kell feldolgozni. A nevek sszehasonltsra hasznlhatja a knyvtri int strcmp(char *s1, char *s2) fggvnyt, de sajt maga is megrhatja a szksges kdot. Az strcmp visszatrsi rtke negatv, 0 vagy pozitv a paramterknt tadott sztrigek kztti relci szerint. Ha egy nv tbbszr fordul el, akkor is csak egyszer szerepeljen a listban.

    2.23 rjon olyan teljes ANSI C programot, ami egy parancssori paramterknt kapott szveges fjlban tallhat, angol nyelv vers szavait kirja ABC rendben s mindegyik sz mellett feltnteti, hogy hnyszor szerepelt a szvegben. A vers sszes szava biztosan elfr egyszerre a memriban. A fjlt csak egyszer olvashatja vgig.

    2.24 A filter.txt nev szveges fjl els eleme a fjlban trolt szavak szma, ezt kvetik szkzzel elvlasztva maguk a szavak, amelyek mindegyike maximum 30 karakterbl ll. Pl.:

    6 alma krte szilva narancs kansz bbita

    Ksztsen egy olyan ANSI C programot, amely kiszri a szabvnyos bemenetrl rkez szvegbl azokat a szavakat, melyek megtallhatk a filter.txt-ben; helyettk a szveg jelenjen meg! A cenzrzott szveget a szabvnyos kimeneten jelentse meg! A szabvnyos bemenetrl rkez szvegben tetszleges hosszsg szavak elfordulhatnak!

    Pl. A krte sokkal jobb, mint a kansz almja. => A sokkal jobb, mint a almja.

    2.25 Ksztsen olyan szabvnyos ANSI C programot, mely parancssori paramterknt kapja egy szveges fjl nevt. A fjl sorai a kvetkez adatokat tartalmazzk pontosvesszvel elvlasztva: nv;anyja neve;szlets helye;szlets ideje;TAJ szm. Egy-egy adat hossza nem haladja meg az 50 karaktert. A fjl az orszg lakossgnak egy vre vonatkoz sszes orvosltogatst tartalmazza, teht egy szemly akrhnyszor szerepelhet benne. Olvassa be a fjlt egy TAJ szm szerint rendezett binris fba, s szmolja meg, hogy egy-egy beteg sszesen hnyszor volt orvosnl!

    rja ki a szabvnyos kimenetre azon betegek adatait TAJ szm szerint nvekv sorrendben, valamint a vizitdj visszatr-ts sszegt azoknl, akiknek az jr! Azoknak jr vizitdj visszatrts, akik hsznl tbb alkalommal jrtak orvosnl. Egy vizit dja 300 Ft. A beteg annyiszor 300 Ft-ot kap vissza, ahnnyal meghaladta a hszat az orvosnl tett ltogatsainak szma.

    2.26 Egy cg az alkalmazottai adatait az albbi adatszerkezet segtsgvel trolja el:

    typedef srtuct alkalmazott { char nev[20]; int id; Beosztas beosztas; int fonok_id; double fizetes; struct alkalmazott *bal, *jobb; } Alkalmazott, *PAlkalmazott;

    rjon ANSI C fggvnyt, amely egyetlen paramteknt megkapja a fenti binris fa gykerre mutat pointert, s a cges

    tlagfizets 66 %-nl kevesebbet keres alkalmazottak fizetst megemeli 12 %-kal. A fggvny visszatr rtke az a tbbletkltsg legyen, amit a fizetsemels jelent a cgnek. A fa a beosztottak azonostja (id) szerint van rendezve.

  • 31

    2.27 rjon olyan teljes ANSI C programot, ami egy parancssori paramterknt kapott szveges fjlban tallhat C-s fggvnyhvsokhoz hasonl szintaktikj utastsokat dolgoz fel. Az utastsok szerkezete a kvetkez:

    utastsnv(paramter1, paramter2, ); Az utastsok tetszleges szm paramtert tartalmaznak, de tudjuk, hogy sem az utastsnevek, sem a paramterek nem

    hosszabbak 20 karakternl. Az utastsokat, illetve a paramtereket tetszleges szm whitespace karakter (szkz, tabultor, jsor jel) vlaszthatja el. A program ksztsen egy fss listt, amelynek f listja tartalmazza az utastsneveket s ezekhez egy listban trolja el a paramtereket. Definilja a szksges adatszerkezeteket is!

    2.28 Adott az albbi tpusdefinci:

    typedef struct utelagazas{ struct utelagazas *irany[4]; double x,y; int flag; }elag, *pelag;

    Az elag tpus struktrk labirintust ptenek fel. Az irany tmb ngy eleme a ngy gtjat jelenti. Amennyiben az

    adott irnyban nem lehet tovbbhaladni, azt NULL pointer jelzi. A labirintus csompontjai fa-szerkezetet alkotnak, azaz a labirintusban nem lehet krbe menni. Az x s az y a csompont koordintit jelentik mterben. A kijrat koordinti x=0, y=0. A flag rtke garantltan 0.

    Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja a labirintus bejratnak, mint elag tpu-s csompontnak a cmt, s kirja a bejrat s a kijrat kztti tvonalat, azaz az tba es csompontok x,y koordintit, mghozz a bejrattl a kijrat fel haladva! (Ellenkez irny kirs esetn 3 pont levons!) A kirt tvonal egy csompontot csak egyszer tartalmazhat, azaz a bejrat s kijrat kztti legrvidebb tvonalat kell kirnia! Ha a fggvny nem a legrvi-debb tvonalat rja ki, a feladatra maximum 3 pont adhat! A flag rtkt a fggvny szabadon megvltoztathatja, azonban kilps eltt mindet vissza kell lltani 0-ra! Ennek elmulasztsa 3 pont levonssal jr! (Segdfggvny(eke)t is rhat!)

    2.29 Ksztsen olyan szabvnyos ANSI C programot, amely els parancssori paramterknt kapja egy tilosban parkol-sok adatait tartalmaz szveges fjl nevt. A fjl sorai a kvetkez adatokat tartalmazzk pontosvesszvel elvlasztva: rend-szm;nv;cm;v;h;nap. A rendszm max. 8 karakter, a nv s a cm hossza pedig nem haladhatja meg a 100 karaktert.

    a) A program rja a msodik parancssori paramterknt megadott fjlba azokat a sorokat, melyek egy vnl rgebbi tilos-ban parkolst mutatnak. (5p)

    b) A program rja a harmadik parancssori paramterknt megadott fjlba azokat a rendszmokat, valamint neveket s c-meket pontosvesszvel elvlasztva (azaz a sort dtum nlkl), amelyek esetben az adott rendszm aut az elmlt egy vben legalbb hrom alkalommal tilosban parkolt. (10p) A jelenlegi dtumot a program negyedik, tdik s hatodik parancssori paramterknt kapja v, h s nap sorrendben (szve-ges formtumban, azaz stringknt). A bemen adatokat tartalmaz fjlt csak egyszer olvashatja!

    2.30 Egy gyvdi irodban egy adott napra bert trgyalsokat az albbi struktrn alapul listval tartjk szmon:

    typedef struct targyalas { char megnevezes[20]; int kezdete; int idotartama; struct targyalas *kov; } Targyalas;

    A trgyals kezdete az jfl ta eltelt percek szmban adott, a munkaid reggel 8 rtl (480. perc) dlutn 5 rig

    (1020. perc) tart. rjon egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja a fenti elemekbl ll rendezet-len lista els elemre mutat pointert, egy kezdeti idt s egy idtartamot. A fggvny ellenrizze le, hogy az adott napra beszrhat-e az adott percben kezdd s adott idtartam trgyals. Ha nem, akkor adja vissza a legkorbbi olyan trgyals-ra mutat pointert, amivel tkzik, ha igen, akkor adjon vissza NULL pointert!

  • 32

    2.31 Az j elss vfolyam adatai egy szveges fjlban vannak, amelynek szerkezete soronknt a kvetkez:

    csaldnv 20 karakter keresztnv 20 karakter Neptun-kd 6 karakter tankr szm decimlis egsz, 2 szmjegy felvtel ve decimlis egsz, 4 szmjegy szlets ve decimlis egsz, 4 szmjegy szlets hnapja decimlis egsz, 2 szmjegy szlets napja decimlis egsz, 2 szmjegy t darab trgy osztlyzatai 5 karakter

    Ksztsen statisztikai programot szabvnyos ANSI C nyelven! A program a bemen binris fjl nevt parancssori para-

    mterknt vegye t! rja ki a kpernyre, hogy az egyes rdemjegyekbl hny szletett, azt, hogy hny hallgat tlaga trt el felfel illetve lefel az vfolyamtlagtl legalbb 20%-kal, valamint a legjobb hrom tlaggal rendelkez hallgat nevt s Neptun-kdjt. A fjlt csak egyszer olvashatja vgig! A fjl tartalma teljes egszben elfr a memriban.

    2.32 Adottak a kvetkez tpusdefincik:

    struct alagut; typedef struct { struct alagut * kov; unsigned max,akt; double hossz; }adat,*padat; typedef struct alagut{ padat tomb; unsigned n; }alag,*palag;

    Egy vrosi kbelcsatorna-hlzatot ler program kt fggvnyt ksztjk el. Az alagut tpus struktrk egy irny-

    tott grf csompontjai (a csatorna elgazsai). A csompontok tomb adattagja a szomszdos csompontokba vezet lek (csvek) adatait tartalmazzk, az n pedig a tmb elemszma (ha n==0, akkor tomb==NULL). Az lek adatai: kov: a szom-szdos csompontra mutat pointer. NULL, ha nincs szomszd; max: egy csben hny adatkbel futhat; akt: jelenleg hny adatkbel fut; hossz: a cs hossza. Egy adott csompontba tbb ton is el lehet jutni, de visszafel nem, sem kzvetlenl, sem kzvetve.

    a) rjon egy olyan szabvnyos ANSI C fggvnyt, amely paramterknt kapja kt csompont cmt, visszatrsi rtkke pedig a csompontok kztti legrvidebb olyan t hossza, amelyen mg lefektethet kbel a kt csompont kztt (akt

  • 33

    2.35 rjon egy olyan szabvnyos ANSI C programot, amely parancssori paramterknt kapja kt szvegfjl nevt! Az els fjl egy weboldalt ler html szveg.

    a) A program gyjtse ki a fjlban tallhat e-mail cmeket, melyeket aztn fa vagy lista adatszerkezetben troljon (egy cmet elg egyszer eltrolni)! Az e-mail cmek olyan karaktersorozatok, melyek az angol ABC kis- s nagybetibl, szmok-bl, pontokbl (.), ktjelekbl(-) s alhzs (_) jelekbl llnak, s ktelezen tartalmaznak pontosan egy @ karaktert. Az e-mail cmben nem llhat egyms mellett kt pont, valamint nem llhat egyms mellett egy pont s egy @. Minden egyb, itt fel nem sorolt karakter elvlaszt karakternek minsl. Egy e-mail cm hossza maximum 100 karakter. Ha ennk hosszabb, amgy rvnyes karaktersorozatra bukkanunk, azt ne tekintsk e-mail cmnek! A nem e-mail cm karaktersorozatok hossza brmekkora lehet, ezek fix hosszsg tmbben val eltrolsa slyos hiba, minimum 5 pont levonssal jr. (10p)

    b) A msodik parancssori paramterknt kapott szvegfjl minden sora egy-egy, korbban kigyjttt e-mail cmet tartal-maz. A program olvassa be az e-mail cmeket, s fslje ssze a most tallt cmekkel, majd mentse el ugyanebbe a fjlba az sszes cmet abc sorrendben, minden cmet csak egyszer troljon! (5p)

    2.36 Adott a kvetkez tpusdefinci:

    typedef struct fa{ unsigned kulcs; char szo[50]; struct fa *bal,*jobb; }bifa,*pbifa;

    a) Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy bifa tpus elemekbl ll, kulcs szerint rendezett

    binris fa els elemre mutat pointert (gy) s egy beszrand, bifa tpus elemre vagy rszfra mutat pointert (uj) vesz t paramterknt, s az uj elemet beszrja a rendezett fa megfelel helyre! A fggvny adja vissza a mdostott fa gykr-elemnek cmt! (5p)

    b) Ksztsen egy olyan szabvnyos ANSI C fggvnyt, amely egy bifa tpus elemekbl ll, kulcs szerint rendezett binris fa els elemre mutat pointert (gy) s egy eljel nlkli egszet (torol) vesz t paramterknt; megkeresi a fban a torol paramterrel megegyez kulcs elemet, s ha benne van, trli ezt az elemet! Csak ezt az elemet trlje, a belle indul kt rszft a fa ms elemeihez kell csatolnia, mghozz oly mdon, hogy a fa tovbbra is kulcs szerint rendezett ma-radjon! (5p)

    2.37 Egy mszrszk felvsrli szmra ksztsen egy olyan szabvnyos ANSI C programot, amely parancssori param-terknt kapja egy szvegfjl nevt, melyben versenylovak adatai tallhatk! A szvegfjl sorai az albbi adatokat tartalmaz-zk, az adatok pontosvesszvel vannak elvlasztva, egy adat hossza maximum 50 karakter, az letkor maximum 4 karakter:

    L neve;letkora(hnap);Anyja neve;Apja neve;Tulajdonos neve;eredmnyessg Pl.: rlt Tncos;88;Veronika;stks;Beviz Elek;-3.825

    A program rja ki azon lovak nevt, amelyek elg olcsak ahhoz, hogy a mszrszk felvsrli megvegyk cgknek l-

    kolbsz gyrtsa cljbl. A felvsrlk azokat a lovakat tekintik elg olcsnak, amelyek legalbb t vesek (60 h), s eredmnyessgk alacsony. Azok a lovak szmtanak alacsony eredmnyessgnek, melyekre igaz, hogy eredmnyes-sg

  • 34

    2.39 Ksztsen egy olyan C programot, amely parancssori paramterknt vesz t kt fjlnevet. Mindkt fjl binris fjl! Mindkt fjl csupa egsz szmot tartalmaz. A program az els fjlt olvassra, a msodikat rsra nyissa meg, ezutn tmrtse az els fjl tartalmt a msodikba a kvetkez mdszerrel: ha legalbb n