Gyakorlattal kapcsolatos anyagok

Gyakorlat időpont
Hétfő 16:00-17:30
Gyakorlat helyszín
É 5.56
Előadás időpont
Hétfő 17:45-19:15
Előadás helyszín
D 0-805

FIGYELEM! Az oldalra feltöltött kódokat nem én írtam és nem is ellenőriztem őket. Az órán írt kódokat hallgatók küldték el nekem, amiket változatlan formában tettem közzé azoknak segítségül, akik esetleg lemaradtak.

1. Gyakorlat

Helyettesítve

2. Gyakorlat

Helyettesítve

3. Gyakorlat

  • scanf
  • tömbök

4. Gyakorlat

  • fgets
  • stringek

5. Gyakorlat

  • Mutatók
  • Tömbök konvertálódása mutatókra
  • Pointer aritmetika

6. Gyakorlat

  • File input/output

7. Gyakorlat

  • Parancssori argumentumok
  • atoi,atof,strcmp
  • stdin és inputfile-ok egységes kezelése

8. Gyakorlat

  • Véletlen számok

9. Gyakorlat

  • struct-ok

10. Gyakorlat

  • Haladó parancssori argumentum kezelés

11. Gyakorlat

  • Heap kezelése

12. Gyakorlat

  • Minta ZH

13. Gyakorlat

  • Minta ZH

Beadandó feladatok

A feladatokat Fizikus C tárggyal az e-mail címemre várom.

1. Beadandó

Írjunk polinom szorzó programot! Bemenet: első majd a második polinom fokszáma. Ezután a polinomok együtthatói. Kimenet: a szorzat polinom együtthatói.

2. Beadandó

Írjunk kódoló programot! Bemenet: kódolatlan szöveg. Kimenet: ROT13 (https://hu.wikipedia.org/wiki/ROT13) kódolt szöveg. Opcionalis bonyolítás: kis- és nagybetűkre egyaránt működjön!

3. Beadandó

Olvassunk be egy input.txt nevű állományt. Kérdezzük meg a felhasználót mi legyen a kimeneti fájl neve. A kimeneti fájlba írjuk bele az összes szót duplán, ami a bemeneti fájlban volt. Például ha a bemenet az volt, hogy "Hull a szilva", a kimenet legyen az, hogy "Hull hull a a szilva szilva". Működjön a program akkor is, ha több fehér karakter van a szavak között, akkor is, ha egy szavas a fájl, stb. A kimenetben nem kell megőrizni az eredeti fehér karaktereket, elég ha minden kimenő szó között egy space található.

4. Beadandó

Írjunk egy mátrixokat szorzó programot. A program bemenetei parancssori argumentumokként fájlok nevei legyenek. A fájlokban legyenek mátrixok, a sor és oszlopszám megemlítése nélkül. A sorokat fgets segítségével tudjuk beolvasni, az egyes sorokat meg sscanf segítségével felsorolni. A mátrixokat abban a sorrendben szorozzuk össze, ahogyan a parancssorban meg lettek adva. Tetszőleges alakú mátrixra működjön a program, ha a sor és az oszlop szám kissebb mint 11. Amennyiben két mátrix nem kompatibilis egymással jelezzük ezt (fájlnév vagy fájl sorszáma ahol elromolott a dolog). Opcionálisan a hibás mátrixokat (pl egyel kevesebb szám az egyik sorban) is detektálni lehet.

5. Beadandó

Írjunk egy teendők listáját kezelő programot. A program parancssori argumentumokon keresztül kapja a bemenetét és egy TODO.txt nevű fájlon dolgozzon. Teendőt lehessen hozzáadni a listához egy prioritással együtt, lehessen kilistázni az összes teendőt prioritás szerinti csökkenő sorrendben, valamint lehesen törölni teendőket. Teendők törlése úgy történjen, hogy egy új teendő felvételekor kapjon automatikusan a TODO.txt-ben egy sorszámot az adott teendő. Kilistázáskor a sorszámokat is írjuk ki. Törölni az adott sorszám megadásával lehet teendőt. Arra figyeljünk, hogy amikor a teendők leírását adjuk meg, akkor a leírás legyen macskakörmök között. Néhány példa, hogy hogyan kell használni az alkalmazást, valamint az adatszerkezet amit használni kell lentebb látható. A TODO.txt-be sort szúrni, vagy sort törölni belőle úgy tudunk, hogy beolvassok a fájl teljes tartalmát, majd a beolvasott adatokhoz hozzárakunk egy elemet, vagy töröljük a megfelelő elemet, majd eztán az összes adattal felülírjuk a TODO.txt-t.

struct todo {
    int prioritas, azonosito;
    char leiras[50];
};

./todo add 5 "levinni a szemetet"
./todo list
// 1-es azonosítójú teendő törlése
./todo del 1
          

6. Beadandó

Írjunk egy filterező programot. Amennyiben nem kap semmilyen kapcsolót, működjön a cat programhoz hasonlóan, azaz írja ki a szabványos kimenetre a paraméterül kapott fájl tartalmát. Amennyiben nem kap fájlt paraméterül, a szabványos bemenetet írja ki a szabványos kimenetre. Emellett rendelkezzen a program w és l kapcsolókkal. Mind a két kapcsolónak legyen egy-egy argumentuma, ami azt határozza meg, hányadik sorokat, valamint hányadik szavakar írja ki a program. Például ha a w 2 az l pedig 3 értéket kap, akkor minden harmadik sor minden második szavát írja ki a program. Emellett legyen egy n kapcsoló, ami invertálja a program működését, tehát pontosan azokat a szavakat írja ki, amiket amúgy nem írna ki. A program felparaméterezéséra alább látható néhány példa. A fehér karaktereit a bemenetnek nem kell megőrizni. A kapcsolók tetszőleges sorrendben legyenek megadhatóak, valamint az n kapcsoló mind az l és a w előtt megadható legyen ugyanazon kapcsolócsoportban. Az l és a w argumentumai a következő parancssori paraméterben kell szerepeljenek.

./filter -l 2 -w 3
./filter inputfile -nl 3 -w 2