Gyakorló feladatok 2008
Néhány feladat megoldása megtalálható: http://www.hit.bme.hu/~szandi/prog2/lab/megold/
2.hét
1.
Készítsünk 2 forrásból álló programot. Az egyik forrás tartalmazza a main függvényt, amelyben meghívunk egy atlag nevű függvényt, amelynek kódja egy másik forrásban van. Az atlag fuggvény írja ki a nevünket és adja vissza eredményként a tanulmányi átlagunkat (double érték).
Első próbálkozásként ne használjunk se extern deklarációt se header fájlt.
Miért nem a várt eredményt kapjuk?
Javítsunk ki a hibát header fájl használatával!
2.
Készítsünk közös munkával egy tetszőleges pozitív egész számokat kezelő programcsomagot.
A számokat egy láncolt listába tároljuk, a lista első eleme lesz a legkisebb helyiértékű számjegy.
A deklarációt a LongNum.h header fájlban adtuk meg.
Az egyes funkcókat és a hozzájuk használt header fájlt a következő táblázat foglalja össze:
Header fájl |
Prototípus |
Leírás |
LongNumIO.h |
LNum ReadLongNum(FILE *); int PrintLongNum(LNum,FILE *); void LongNumInit(LNum *); void LongNumDestroy(LNum *); LNum LongNumCopy(LNum); |
Beolvasás fájlból Kinyomtatás fájlba Inicializálás a 0 számra A szám kitörlése A szám másolása |
LongNumAdd.h |
LNum LongNumAdd(LNum,LNum) |
Összeadás |
LongNumSub.h |
LNum LongNumSub(LNum,LNum) |
Kivonás (hiba ha az első kisebb) |
LongNumInc.h |
void LongNumInc(LNum *) int LongNumDec(LNum *) |
Increment Decrement (logikai fv.) |
LongNumLog.h |
int IsLegal(LNum) int IsZero(LNum) int IsGreater(LNum,LNum) int IsGreaterE(LNum,LNum) int IsEq(LNum,LNum) |
Legális ábrázolás Érteke zéró (logikai fv.) Első paraméter nagyobb Első par. nagyobb vagy egyenlő Egyenlő |
LongNumMul.h |
LNum LongNumMul(LNum,LNum) |
Szorzat |
LongNumDiv.h |
LNum LongNumDiv(LNum,LNum) |
Egész osztás |
LongNumMod.h |
LNum LongNumMod(LNum,LNum) |
Maradék |
LongNumConv.h |
LNum Int2LongNum(int) |
int-et konvertál LongNum-ra |
LongNumString.h |
char *LongNum2Str(LNum) |
LongNum-t string-re alakít |
Írjunk az előző feladathoz a lehető legtöbb funkciót bemutató főprogramot.
3.
Készítse el a gyakorlaton megbeszélt String struktúra függvényeit.
struct String { // a lezáró nulla léte vagy nemléte inplementációs kérdés
char *p; // pointer az adatra
int len; // hossz a lezáró nulla nélkül
};
A megvalósítandó függvényekből néhány példa:
void createFromChar(struct String *s, char ch);
void createFromCharStr(struct String *s, char *p);
struct String concat(struct String a, struct String b);
char index(struct String str, int idx);
void print(struct String str);
void dispose(struct String str);