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);