Click here to load reader

Dinamikus tömbök

  • View
    53

  • Download
    3

Embed Size (px)

DESCRIPTION

Dinamikus tömbök. Dinamikus tömbök. Létrehozáskor megadott méretük a futás során változtatható Használatának lépései: Mutató létrehozása Memória allokálása (lefoglalás) – bárhol szerepelhet a programban; lehetőség van tömb átméretezésére Feldolgozás (esetleg átméretezés) - PowerPoint PPT Presentation

Text of Dinamikus tömbök

  • DINAMIKUS TMBK

  • Dinamikus tmbkLtrehozskor megadott mretk a futs sorn vltoztathatHasznlatnak lpsei:Mutat ltrehozsaMemria alloklsa (lefoglals) brhol szerepelhet a programban; lehetsg van tmb tmretezsreFeldolgozs (esetleg tmretezs)Lefoglalt terlet felszabadtsa a lefoglalt terlet nem szabadul fel automatikusan

  • Dinamikus tmbkezelsMemria dinamikus lefoglalsa: malloc() s calloc()malloc() egy paramtert vr, mely bjtokban adja meg, hogy mekkora legyen a lefoglalt memria terlet.calloc() els paramter, hogy hny elem jjjn ltre, msodik paramter pedig a tmb egyetlen elemnek mrett vrjaMretek megadsnl rdemes megadni a sizeof() opertort

  • Visszatrsi rtkk egy void * tpus mutat, ami a lefoglalt memriaterletre mutat.A visszakapott mutatt tpusknyszerteni kell a megfelel tpusra.Plda: 10 elem egszekbl ll dinamikusan foglalt tmb:int *t, *t2;t= (int*)malloc(sizeof(int)*10);t2=(int*)calloc(10, sizeof(int));

  • A realloc fggvnyKorbban lefoglalt dinamikus tmb tmretezsre szolglParamterei: els, hogy melyik az a tmb, amelyiket t szeretnnk mretezni, msodik pedig a tmb j mrete egyetlen egszkntVisszatrsi rtk: void * mutat, teht ezt is tpusknyszerteni kellt2=(int*)realloc(t2, sizeof(int)*25);

  • A free fggvnyA dinamikusan foglalt memriaterletek falszabadtsra szolglEgyetlen paramtereknt a mutatt kell megadni, amely ltal mutatott terletet fel szeretnnk szabadtani:free(t);free(t2);

  • 1. FeladatKszts programot, melyben a felhasznltl bekrsz egy szmot, majd ltrehozol a szmnak megfelel mret dinamikus tmbt. A tmbt tltsd fel vletlen egszekkel 0 s 1000 kztt, majd rd a kpernyre a szmok tlagt.

  • 2. Feladatrj olyan programot, mely a felhasznltl 0 vgjelig szmokat olvas (elre nem tudjuk mennyit). A szmok kzl a prosak kerljenek a paros tmbbe, a pratlanok a paratlan tmbbe. A program vgl rja ki a beolvasott pros s pratlan szmokat kln sorba.

  • 3. FeladatKszts olyan programot, melyben ltrehozol egy a felhasznl ltal megadott mret dinamikus tmbt, ebbe pros szmok kerljenek vletlenszeren generlva, s egy msikat ugyangy pratlanokkal. A programbl hvj meg egy ltalad rt fggvnyt, ami paramterl kapja a kt tmbt, majd felcserli ket.

  • Parancssori argumentum

  • Lehetv teszik, hogy egy programnak indtskor a terminlban paramtereket adjunk, s az automatikusan azokkal dolgozzonEgyik elnye, hogy cskkenti a program interaktivitst, ami igen pozitv tulajdonsg, ha a program futst automatizlni szeretnnkA C nyelv a parancssori argumentumokat a main() fggvny formlis paramtereknt megadott dinamikus tmbben trolja el.int main(int argc, char* argv[]){ }

  • argc egy egsz tpus szm, mely a parancssori argumentumok szmt trolja. A 0. parancssori argumentum mindig a futtatand program neve. argv egy sztringet trol tmb. A char* argv[] egy sztringet trol tmbt jell. A mutat tmb minden eleme egy-egy karaktertmbre mutat s minden ilyen karaktertmb egy-egy parancssori argumentumot tartalmaz

  • Az argumentumok feldolgozsaNe felejtsk el ellenrizni, hogy megkaptuk-e a szksges argumentumokat. Pl.: tglalap kt oldalt vrjuk:if (argc
  • Ha stringen kvl ms tpussal is dolgozni akarunk, akkor hasznlhatjuk a ctype.h fejlcllomny atoi() s atof() fggvnyeit.a=atof(argv[1]);b=atof(argv[2]);A parancssori argumentumok rtknek megadsa:./program 12.4 3.3

  • 1. Feladatokrj programot, mely parancssori argumentumknt egy tglalap kt oldalt vrja, majd a kpernyre rja a tglalap terlett s kerlett. A program ellenrizze, hogy megkaptuk-e a szksges argumentumokat.

  • 2. Feladatrj programot, mely parancssori argumentumknt egy egsz szmot vr. Ha kap, akkor 0 s a kapott szm kzt egybknt 0 s 1000 kzt a kpernyre r egy vletlen egsz szmot.

  • 3. FeladatKszts programot, mely parancssori argumentumknt egy mg nem ltez fjl nevt vrja, majd ltrehozza a fjlt, gy, hogy az a nevedet tartalmazza.

  • 4. FeladatMdostsd nhny feladatot gy, hogy ha lehet, parancssori argumentumknt krje be azokat az informcikat, amit eddig szvegesen krtl be.

  • Struktrk

  • StruktrkInhomogn (klnbz tpus elemek), asszociatv (minden elemt lehet nvvel hivatkozni s kzvetlenl elrni) adatszerkezet.Hasznlatt az teszi indokoltt, hogy vannak olyan specilis tpus adatok, melyek tbb klnbz sszetevbl llnak ssze. Ezeket trolhatnnk klnbz vltozkban, ekkor azonban az informcik kztti logikai sszefggs semmilyen fizikai mdon nem lenne megvalstva. Tipikus struktrba szervezend adat pldul egy szemly lakcme, ahol az irnytszm s a hzszm szm, mg a helysgnv s az utcanv szveges tpus

  • C struktrkLegegyszerbb mdszer a struct kulcssz nll megadsa, majd a nv hozzrendelse:struct ember{int ID;};

  • A struktra ltrehozsval lehetsgnk van azonnal vltozk ltrehozsra is az jonnan definilt tpussal:struct ember{int ID;}Dodi;Ezzel deklarljuk azt, hogy Dodi vltoz ember tpus

  • A tovbbiakban a vltozk deklarlsa a kvetkezkpp alakul:struct ember Peti, PanniA C lehetsget biztost nvtelen struktrk ltrehozsra is. struct {int ID;}Jani;A tpust magt nem riztk meg, teht nem tudunk a ksbbiekben hivatkozni r

  • typedefEgy tpusra valamilyen ms nvvel hivatkozhatunkA main fggvny eltt hasznlatos:typedef tpusnv jnv;Az j nevet ugyangy hasznlhatjuk, mint a tpusnevet.typedef struct ember_temp{int ID;} ember;

  • Deklarlskor mr nem kell kirakni a struct szttypedef struct{int ID;} ember;Nagyon knnyen sszetveszthet a fentebb mr emltett deklarlssal, az ember ugyanis itt nem vltoz, hanem tpus.

  • Struktrk hasznlataStruktrt definilni brhol lehet az elfordtnak szl utastsok utnA struktra tpus vltozk tagjaira ponttal trtn minsts segtsgvel hivatkozhatunk. rtkads pldul: Dodi.ID = 5Ltrehozhatunk struktra tmbket is. Ezek tbb olyan elemet fognak ssze, melyek ugyanolyan jellemzkkel brnak. J plda erre egy osztly trolsa

  • typedef struct{int ID;int kor;double magassag} ember;int main(){ember osztaly[30];}Elemre val hivatkozs: osztaly[17].ID

  • 1. FeladatHozz ltre egy struktrt komplex szmok trolsra, majd rd meg a komplex sszeads fggvnyt.

  • 2. FeladatKszts programot, melyben van egy ktdimenzis pontok trolsra alkalmas struktradefinici. A program krje be kt pont adatait, majd rja a kpernyre a kt pont tvolsgt, valamint a felezpont koordintit.

  • 3. FeladatKszts programot, melyben szerepel egy 12 tag struktratmb. A tmb elemei legyenek hnapok, melyek a kvetkez tulajdonsggal rendelkeznek: napok szma, profit. Tltsd fel a tmbt adatokkal (a profit legyen vletlen 200000 s 500000 kztt). Majd rd a kpernyre, hogy az egyes negyedvekben mennyi volt a napi tlagos profit.

  • 4. FeladatEgy fjlban lemezek adatai vannak elmentve azonost kiads_ve dalok_szma formban. Kszts programot, melyben egy olyan struktrt hasznlsz, ami alkalmas a lemezek adatainak trolsra. A program krjen be egy vszmot, majd rja ki az sszes olyan lemez azonostjt, mely az adott vben kszlt.

  • 5. FeladatBvtsd a 2. feladatot gy, hogy a program alkalmas legyen skbeli transzformcik elvgzsre, azaz krjen be egy pontot, majd a felhasznl utastsainak megfelelen tudja a pontot eltolni, forgatni egy msik pont krl, tkrzni egy pontra, illetve tkrzni valamelyik tengelyre. A programban minden transzformci kln fggvny legyen, s a fggvnyek visszatrsi rtke legyen az eredmnyl kapott pont.

Search related