Argumentumok kiírása
Írj programot, amely számozva kiírja a parancssori argumentumait a képernyőre!
Az argumentumok száma
Tegyük fel, hogy írni kell egy programot, amely két parancssori argumentumot vár: egy bemeneti és egy kimeneti fájl nevét. Írj rövid programot, amely ellenőrzi, hogy pontosan két parancssori argumentumot kapott-e! Írjon a program hibaüzenetet a képernyőre, ha nem!
Mini számológép
Írj programot, amely parancssori argumentumként három valamit vár: az első és a harmadik egy szám, a középső pedig a +, -, *, / műveleti jelek egyike! Írja ki a program a képernyőre az elvégzett művelet eredményét, vagy egy hibaüzenetet, ha az argumentumok bármilyen szempontból nem elfogadhatóak!
frank@hal9000:~$ szamologep 1 / 2 Az eredmeny: 0.5 frank@hal9000:~$ szamologep b + 2 Az elso es a harmadik argumentum legyen szam! frank@hal9000:~$ szamologep 1 +xyz 2 A masodik argumentum egy muveleti jel legyen!
Mátrix négyzetre emelése
Írj egy programot, amelyik a parancssori paramétereiben vesz át egy négyzet alakú mátrixot, és megszorozza azt saját magával! Az eredményt mátrix formában jelenítse meg!
Fájl beolvasása
Készíts programot, mely az „adat1.txt” fájl tartalmát beolvassa és kiírja a képernyőre!
Fájl írása
Készíts programot, mely bekéri a felhasználó nevét, és azt az „adat1.txt” fájlba eltárolja! (Ha már létezett a file korábban, írja felül.)
Hányszor indult?
Készíts programot, mely induláskor írja ki a képernyőre, hogy hanyadszorra indítják. Az indítások számát tárolja az "indit.ini" fájlban. (Ha a file még nem létezik, akkor ez az első indítás, ha már létezik, akkor olvassa ki belőle az eddigi indítások számát, adjon hozzá egyet, azt írja ki a képernyőre, és tárolja vissza a fájlba.)
Kisbetűk
Készíts programot, amely egy megadott fájlt átolvasva kiírja, hogy az angol ABC kisbetűi közül melyik hányszor szerepel benne.
Köbméter
Egy tóra négyzetrácsot fektetünk, a négyzetrács egyes pontjaiban a tó mélységét tároljuk. 0-val jelöljük a szárazföldet, negatív számmal a mélységet méterben. Készíts programot, amelyik egy ilyen, fájlban adott „térkép” alapján téglatest módszerrel becsli a tó térfogatát. Az egyes mérési pontok távolságát kérdezze meg a program a felhasználótól. A fájl első sorában a táblázat szélessége és magassága (egész számok), a többi sorokban a táblázat egyes sorai; valós számok szóközzel elválasztva.
Szövegfájl titkosítása
Készítsünk egy programot, amelyik egy szövegfájlt titkosít. A titkosítás egyszerű: minden betű helyett az ABC-ben következőt használjuk, 'z' helyett pedig 'a'-t.
Minimumkeresés fájlból, formátumsztringek
Egy meteorológiai állomás által rögzített hőmérsékleti értékeket fájlban kapjuk. A fájl első
sorában a mérés napja van, év, szóköz, hónap, szóköz, nap formátumban. A fájl többi
sora óra, kettőspont, perc, szóköz, hőmérséklet (valós szám) formátumban. Olvassuk
be a fájlt, és keressük meg, mikor volt a legmelegebb aznap. Írjuk ki az ehhez tartozó órát és
percet, illetve a hőmérsékletet, 2009.09.17. 12:08 +14.1 formátumban.
Példa bemenet:
2009 09 17 12:45 11.1 12:59 14.3 04:34 -5
Példa kimenet, amely a fenti bemenetre generálódik:
2009.09.17. 12:59 +14.3
Névsor
Egy fájl hallgatók vizsgajegyeit tartalmazza, Neptun-kód, szóköz, jegy, szóköz, név formátumban soronként. Ha a hallgató nem kapott aláírást, a jegy helyén egy mínusz szerepel. Készíts programot, amely statisztikát ír ki a vizsgáról. Például:
AABB12 5 Tehetséges Béla CC43EF 4 Pedál Tibi BBCC34 - Lógós Feri XYYXY1 4 Ezoterikus János
Kimenet:
Jeles: 1 fő Jó: 2 fő Nem kapott aláírást: 1 fő
Egyszerű preprocesszor
Írj programot, amely egy egyszerű C preprocesszorként működik. Beolvas egy C forráskódú
programot, és a #define sorokat értelmezi, illetve a megadott szavakat cseréli.
(Paraméteres makrókat nem kell felismernie.) Példa bemenet:
#define YES 1 #define NO 0 fuggveny(a, YES);
Kimenet:
fuggveny(b, 1);
Az alábbi egyszerűsítésekkel élhetsz. Elegendő, ha a program maximum 100 makrót tud megtanulni. A makrók neve legfeljebb 30 betűs, a tartalmuk legfeljebb 200 betűs lehet. A sorok maximális hossza 1000 lehet, viszont egy sorban egy makró szerepelhet többször is! Feltételezheted, hogy a forráskódban nincsenek sztringek.
Bináris fájlból C forráskód
Gyakran praktikus, ha a programjaink bizonyos adatokat nem fájlból olvasnak, hanem a lefordított program eleve tartalmazza azokat. Készíts programot, amely bináris fájlt beolvasva C-s tömböt készít abból. Például ha egy 8 bájtos bináris fájl a 98, 21, 17, 58, 255, 0, 7, 1 bájtokat tartalmazza, a program által létrehozott szövegfájl így néz ki:
unsigned char adat[] = {
98, 21, 17, 58, 255, 0, 7, 1,
};
const int adat_len=8;
Figyelj arra, hogy a kimeneti fájl tartalmazzon sortöréseket is, vagyis a vesszővel elválasztott számok ne nyúljanak túl a 80 karakteres képernyőn! (A C a tömbök kezdeti értékének megadásakor megengedi, hogy az utolsó adat után is szerepeljen vessző. A fenti példa is ilyen.)
Fájlok összehasonlítása
Írj olyan programot, amely két bináris fájlt hasonlít össze, és kiírja az eltérések helyét, továbbá az első és második fájlban található különböző bájtokat! Például:
poz. f1 f2 0456 00 12 0ef3 fe fb
A nem egyforma méretű fájlokat el se kezdje összehasonlítani!
RLE betömörítés
Az RLE (run length encoding) az egyik legegyszerűbb tömörítési algoritmus. Lényege, hogy az egymás után következő egyforma bájtokat elég csak egyszer eltárolni, és megjelölni, hogy hányszor szerepeltek. Ha pedig nem egyforma bájtok követik egymást, azokat simán átmásolja az RLE.
A tömörített adatunkban 0xbf karakterrel jelöljük az ilyen többszörözést. A 0xbf utáni első karakter az ismétlendő bájt, az azutáni pedig az ismétlések száma!
Írj programot, amelyik egy megadott fájlt betömörítve egy másik fájlba ír! Figyelj arra, hogy ha az eredeti fájlban 0xbf szerepel, azt nem szabad egyszerűen átmásolni, mert akkor a kitömörítő algoritmus ismétlés megjelölésének próbálná értelmezni.
RLE kitömörítés
Írd meg a fenti program kitömörítő párját.
RLE tömörítő
Dolgozd össze az előző két feladat megoldását egy komplett parancssori alkalmazássá! Az alkalmazással lehessen betömöríteni és kitömöríteni is fájlokat! Az elvégzendő műveletet az első parancssori paraméter, a két fájlnevet (bemenet és kimenet) pedig a második parancssori paraméter adja meg!
C:\> rle betomorit input.dat output.rle C:\> rle kitomorit output.rle input.dat