Structuri de Date - Functii de Timp - cu Structuri

Imagine preview
(8/10 din 3 voturi)

Acest laborator prezinta Structuri de Date - Functii de Timp - cu Structuri.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 8 pagini .

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca.

Fratele cel mare te iubeste, acest download este gratuit. Yupyy!

Domenii: Limbaje de Programare, Automatica, Calculatoare, Inteligenta Artificiala

Extras din document

Membrii unei structuri pot fi parametrii unei functii. Se pot utiliza si pointeri la structuri , mai ales când acestea sunt folosite ca parametri în functii. Spre exemplu, se poate apela functia f, al carei parametru este adresa de început a unei zone de memorie alocata structurii d astfel:

f(&d)

Functia f va fi declarata astfel:

void f(struct data *pd) unde pd este un pointer la structura data , care la apel se va initializa cu adresa structurii (&d).

Pentru a accesa un membru al ei, utilizam operatorul de selectie indirecta "->" tot cu

prioritate maxima.

Exemplu

pd->an

Acest acces este echivalent cu (*pd).an dar se prefera utilizarea operatorului ->

Deci, pentru a avea acces la membrii unei structuri în corpul unei functii

- se declara functia având parametru pointer spre acea structura

functie( struct nume_structura *nume_parametru_formal)

- apelul se face astfel : functie(&nume_parametru_efectiv)

- iar în corpul functiei se folosesc constructii de genul: nume_parametru_formal->nume_membru

Ca orice tip de data, tipurile structurate pot fi denumite de utilizator si în acest sens se utilizeaza specificatorul typedef astfel:

typedef struct data {

int zi, luna, an;

}DC;

O structura particulara se va declara, în continuare, utilizând tipul DC definit mai sus.

DC d;

care este echivalenta cu declaratia: struct data d;

Se recomanda, pentru lizibilitatea programelor, ca noile nume date de utilizator sa fie scrise

cu majuscule (ex. DC).

Exemplu typedef struct{

double real, imaginar;

} COMPLEX;

Se poate calcula modulul unui numar complex, utilizând urmatoarea functie:

double modul (COMPLEX *a)

{

return (sqrt(a->real * a->real + a->imaginar *a->imaginar));

}

Functia modul a utilizat functia sqrt din biblioteca math.h

Se pot defini tablouri de structuri.

Exemplu

Revenind la structura de tip personal, putem defini un tablou de structuri astfel:

struct personal{

char nume [20];

char init_tata;

char prenume [20];

struct data data_nast, data_ang;

}tab pers[20];

În acest exemplu fiecare element tab_pers[i] este o structura de tip personal.

Daca am fi declarat:

struct personal *tab_pers[20];

atunci tab_pers ar fi fost un tablou de pointeri la structuri. Deci tab_pers[i] este un pointer

la o structura de tip personal.

2. Functii de timp

a) time_t time(time_t *timer);

- returneaza numarul de secunde scurse de la 00:00:00 GMT, 1 ianuarie 1970, memorând valoarea respectiva la adresa timer (cu conditia sa fie diferita de NULL) - alegerea anului 1970 ca referinta s-a facut pentru compatibilitatea cu UNIX (referinta DOS fiind 1980);

- are prototipul în time.h;

- daca se apeleaza în forma time(NULL), valoarea este numai returnata, nu si memorata;

- time_t este definita în time.h ca long (typedef long time_t;);

Exemplu:

time_t *z,x;

char *sir;

z=(time_t*)malloc(sizeof(time_t));

x=time(z);

sir=ctime(z);

printf("timpul scurs este %ld, data este: %sn",x,sir);

...

Fisiere in arhiva (1):

  • Structuri de date. Functii de timp(cu structuri).doc