C házifeladatok II.


  1. 1. heti házifeladatok
  2. 2-3. heti házifeladatok
  3. 4-5. heti házifeladatok
  4. 6-7. heti házifeladatok
  5. 8-10. heti házifeladatok
  6. 11-13. heti házifeladatok

1. heti házi feladat(ok)

  1. Készítse el a PELDA24.C-hez hasonlóan a valós számok tömbbe olvasását és visszaírását! Az int getint(int *) függvény int getfloat(float *)-ra változtatandó! Az int bufp; lecserélendő char *bufp;-re! Tegyünk legalább annyi inputellenőrzést a getfloat-ba, hogy legalább egy numerikus karakter meglétét megkövetelje, ill. konvertálhatatlan karakterek esetén ürítsük ki a bemeneti puffert a legközelebbi fehér karakterig!

  2. Készítse el az alább felsorolt, ismert C függvények mutatós változatát! A char * visszatérésű függvények az eredmény címével térnek vissza!
Vissza az elejére!

2-3. heti házi feladat(ok)

  1. Készítse el az alább felsorolt, ismert C függvények mutatós változatát! A char * visszatérésű függvények az eredmény címével térnek vissza!

  1. Készítsen char *strstrnext(char *, char *) függvényt, mely ugyanazt teszi, mint az strstr(), de egy static mutató segítségével az első hívás után a második karakterlánc következő elsőbeli előfordulásának címével tér vissza, és ezt mindaddig teszi, míg NULL mutatót nem kell szolgáltatnia.

  2. Készítsen programot két mátrix összeadására! A mátrixoknak foglaljon helyet a memóriában! A mátrixok mérete azonban csak futás időben dől el. A számok beolvasásához felhasználható az int getint(int *) függvény, de feltétlenül lássuk el minimális inputellenőrzéssel!
Vissza az elejére!

4-5. heti házi feladat(ok)

  1. Készítsen programot két mátrix összeadására! A mátrixok mérete itt is futás időben dől el. A programban használjon függvényeket a mátrix méretének-, a mátrix elemeinek bekéréséhez és a két mátrix összeadásához! A két utóbbi függvény paraméterként kapja meg a mátrixokat! A mátrixok összegzését végző rutinnak készítse el a dinamikus változatát is, azaz a függvény csak a két összeadandó mátrixot kapja meg paraméterként méreteivel egyetemben, és a visszatérési értéke legyen a benne dinamikusan foglalt összegmátrix kezdőcíme!

    Az int getint(int *) függvény feltétlenül továbbfejlesztendő pontos, még az ábrázolási határokat is megvizsgáló inputellenőrzésig. A végső változat pedig csak akkor írja ki a behozott, konvertált számot a paraméter címre, ha az inputellenőrzés nem talált hibát.

  2. Készítsen programot, mely a JANI fordítási időben változtatható azonosítójú környezeti változóról megállapítja, hogy létezik-e! Ha létezik, akkor eldönti, hogy értéke 'ló', 'szamár' vagy más. A feladat fokozható egyrészt úgy, hogy a változó lehetséges értékei is legyenek fordítási időben módosíthatók, másrészt úgy, hogy ne rögzítsük kettőben a lehetséges értékek darabszámát!

  3. Alakítsa át úgy az előző, adott környezeti változó értékvizsgálatával foglalkozó szoftvert, hogy a szabvány könyvtári környezetkezelő függvényeket használja feladata ellátására!
Vissza az elejére!

6-7. heti házi feladat(ok)

  1. Készítsen programot, mely a környezeti változó azonosítóját és lehetséges értékeit parancssori paraméterekként kapja meg és megállapításai az előző példában megfogalmazottakkal azonosak! Ha a programot paraméter nélkül indítják, akkor tájékoztasson használatáról!

  2. Készítsen szoftvert, mely egész számokat tároló, egyirányú, láncolt listát hoz létre, és azután megjelenteti a szabvány kimeneten a lista tartalmát! Végül a program szabadítsa is fel a lista tárolásához lefoglalt memóriát! A lista elemeinek számát, illetve a tárolt adatokat véletlenszám-generátorral kell előállítani.

    • Fejlessze tovább úgy a programot, hogy lehetőség nyíljék a listában a felhasználó által megadott érték megkeresésére!

    • Alakítsa át úgy a szoftvert, hogy a felhasználó ki tudjon törölni, és be is tudjon szúrni elemeket a listába!

    Átnézendő a Microsoft Visual C++ keretrendszerben a prodzsekt, a nyomkövetés, a segítség stb. kezelése!
Vissza az elejére!

8-10. heti házi feladat(ok)

  1. Készítsen programot, mely eldönti az indító parancssorban megadott azonosítójú fájlról, hogy ASCII kódú szövegfájl-e, vagy bináris fájl-e! Ha parancssori paraméter nélkül futtatják a programot, akkor ismertesse a képernyőn a használatát!

  2. Készítsen programot, mely az indító parancssorban megadott szövegfájlokat egyesíti a megadás sorrendjében a parancssorban utolsóként előírt azonosítójú szövegfájlba! Ha parancssori paraméter nélkül indítják a programot, akkor ismertesse a képernyőn, hogyan kell használni! Ha csak egy fájlazonosító van a parancssorban, akkor a szabvány bemenet másolandó bele. A fájlok egyesítése során a folyamat előrehaladásáról tájékoztatni kell a képernyőn! A szabvány bemenet másolása esetén végül közlendő az eredményfájl mérete!

  3. Készítsen char * kozepre(char *mit, int szeles) függvényt, mely a saját helyén középre igazítja a mit karakterláncot szeles szélességben, és visszaadja az eredmény karakterlánc kezdőcímét! A középre igazítást csak szeles-nél rövidebb karakterlánc esetén kell elvégezni. A kétoldali párnázó karakter indulásként legyen a szóköz, de legyen fordítási időben ez megváltoztatható!

  4. Készítsen programot, mely igazított táblázatot hoz létre az alábbi tartalmú TABLA fájl
    Szöveg Forint Egész
    Papadopulosz 111222.3 1456
    Sodik_sor 2.2 345
    szabvány bementkénti átirányításával. Az eredmény táblázat:
    +-------------------------------+-------------------+------------+ | Szöveg | Forint | Egész | +-------------------------------+-------------------+------------+ | Papadopulosz | 111222.30Ft | 1456 | +-------------------------------+-------------------+------------+ | Sodik_sor | 2.20Ft | 345 | +-------------------------------+-------------------+------------+ ahol az első oszlop balra-, a második jobbra-, s a harmadik középre igazított. A tábla egy sorának szerkezete: | MEZO1| MEZO2Ft | MEZO3 | ahol MEZO1, MEZO2 és MEZO3 bruttó adatszélességek a mutatott módon.

  5. Legyen ugyanaz a feladat, mint az előbb, de most az adatokat lehessen billentyűzetről is megadni!

  6. Alakítsa át úgy a jegyzet PELDA27.C-beli int getint(int *) függvényét, hogy az fogadja a BACKSPACE gombot is a szokásos funkcióval!

    Áttanulmányozandó Linux rendszerben (GNU C) a szerkesztés, a program fordítása, kapcsolószerkesztése, futtatása és a segítség!
Vissza az elejére!

11-13. heti házi feladat(ok)

  1. Készítsen hibakezelést is megvalósító off_t fajlmeret(char *fajlazonosito) függvényt, mely megállapítja a paraméter fájl méretét! Próbálja is ki a rutint egy olyan főprogrammal, mely a kérdéses fájlt parancssori paraméterként kapja!

  2. Készítse el újra az alacsony szintű B/K ismereteit felhasználva azt a programot, mely az indító parancssorban megadott fájlokat egyesíti a megadás sorrendjében a parancssorban utolsóként előírt azonosítójú fájlba! Ha kettőnél kevesebb parancssori paraméterrel indítják a szoftvert, akkor ismertesse a képernyőn, hogyan kell használni! A fájlok egyesítése során a folyamat előrehaladásáról tájékoztatni kell most is a képernyőn!

  3. Egy vállalat két, egyszerű szöveges állományban (bevetel.txt, kiadas.txt) tárolja havi bevételeit és kiadásait. A bevételeket pozitív, a kiadásokat negatív előjelellel rögzítették. Készítsen olyan programot, amely új folyamatot indít a kiadások összegzésére, mialatt maga a bevételeket adja össze. A két részeredményt aztán a szülő folyamatnak kell összeadnia, és meg kell jelenítenie a nyereség/veszteség mértékét!

  4. Készítsen olyan programot, ami EOF végjelig szövegsorokat olvas a szabvány bemenetről! Menüpontok segítségével tegye lehetővé, hogy a felhasználó növekvő vagy csökkenő sorrendbe rendezhesse az adatokat! A rendezést az operációs rendszer sort programjának segítségével kell elvégeztetni, ami a paraméterként kapott szövegfájl sorait növekvőleg (-r paramétert megadva: csökkenőleg) rendezi, és a szabvány kimenetre írja. A sort-ot az overlay technika felhasználásával indítsa el!
Vissza az elejére!