Lucrarea nr



Yüklə 0,56 Mb.
səhifə15/20
tarix17.01.2019
ölçüsü0,56 Mb.
#98835
1   ...   12   13   14   15   16   17   18   19   20

7.2Probleme rezolvate


Problema 1. Se consideră structura
struct complex

{

double real, imag;



};
ce descrie numerele complexe. Să se definească o funcţie care să adune două numere complexe. Să se facă un program care să definească trei variabile de tipul complex, să atribuie valori la două dintre variabile şi să calculeze suma lor utilizând funcţia. Se vor scrie apoi valorile variabilelor pe ecran sub forma (real, imag). Vom defini tipul de date cu instrucţiunea typedef. Programul ce rezolvă problema este următorul.
# include

// structuri tip C

typedef struct

{

float real;



float imag;

} numcmp;


numcmp addcmp(numcmp a, numcmp b)

{

numcmp c;



c.real = a.real + b.real;

c.imag = a.imag + b.imag;

return c;

}
int main ()

{

numcmp cx, cy, cz;



numcmp * pv;

cx.real = 1;

cx.imag = 1;

cy.real = 0;

cy.imag = 1;

cz = addcmp(cx, cy);

// apeleaza componentele cu operatorul .

printf("(%f , %f)\n", cz.real, cz.imag);

pv = &cz;

// apeleaza componentele prin pointer

printf("(%f , %f)\n", pv->real, pv->imag);

return 0;

}
Rezultatele rulării programului sunt cele de mai jos.



7.3Probleme propuse


Problema 1. Se consideră structura complex din problema rezolvată 1. Să se facă un program care să definească un vector x cu 10 componente de tipul complex. Se va calcula dimensiunea structurii complex şi a vectorului x cu ajutorul instrucţiunii sizeof.
Problema 2. Se consideră structura complex din problema rezolvată 1. Să se definească funcţii pentru scăderea, înmulţirea şi împărţirea a două numere complexe. Prototipurile acestor funcţii vor fi

numcmp subcmp(numcmp a, numcmp b)

numcmp mulcmp(numcmp a, numcmp b)

numcmp divcmp(numcmp a, numcmp b)


Problema 3. Fie structura
struct data

{

char nume[20];



int zi, luna, an:

};
ce descrie data naşterii unei persoane. Să se definească un vector cu 5 elemente tip data care se vor iniţializa cu valorile

nume zi luna an

Radu 10 7 1985

Dragos 11 2 1992

Cosmin 5 9 1978

Ovidiu 8 9 1964

Raul 15 4 1994

Să se calculeze câte persoane sunt născute după anul 1990.

7.4Uniuni


O uniune se defineşte cu instrucţiunea

union nume {lista de declaraţii de tip};

Toate câmpurile unei uniuni ocupă aceeaşi zonă de memorie. Uniunile se utilizează atunci când variabile de tipuri diferite nu trebuie iniţializate în acelaşi timp.

Variabilele de tipul unei uniuni se definesc cu instrucţiunea :

union nume lista de variabile;
Probleme rezolvate

Problema 1. Fie uniunea
union id

{

char culoare[10];



int marime;

};

Să se definească o variabilă de tip id care se va iniţializa pe rând cu valorile “alb” şi 10 şi se vor scrie aceste valori pe ecran. Se va calcula dimensiunea uniunii id cu operatorul sizeof. In program definim tipul de date corespunzător uniunii, id, cu instrucţiunea typedef.



Programul ce rezolvă problema este următorul.
# include

# include


typedef union

{

int size;



char color[20];

} id;
int main()

{

id x1;


x1.size = 8;

printf("size : %d\n", x1.size);

strcpy(x1.color, "white");

printf("color : %s\n", x1.color);

printf("union size : %d\n", sizeof(id));

return 0;

}
Rezultatele rulării programului sunt cele de mai jos.



7.5Funcţii de timp


In acest paragraf vom prezenta funcţiile de timp. Prototipurile acestor funcţiilor se află în biblioteca sau .


  • Timpul curent este măsurat în secunde începând cu 1 ianuarie 1990 ora 0, GMT.

  • Variabilele ce conţin timpul au tipul time_t.

  • Funcţia

time_t time(time_t*);

iniţializează variabile de tipul time_t cu timpul curent.



  • Funcţia

char * ctime(time_t * t1);

converteşte timpul curent GMT indicat de variabila t1 într-un şir de caractere ce conţine timpul curent local.



  • Structura predefinită

struct tm {

int tm_sec; /* seconds after the minute - [0,59] */

int tm_min; /* minutes after the hour - [0,59] */

int tm_hour; /* hours since midnight - [0,23] */

int tm_mday; /* day of the month - [1,31] */

int tm_mon; /* months since January - [0,11] */

int tm_year; /* years since 1900 */

int tm_wday; /* days since Sunday - [0,6] */

int tm_yday; /* days since January 1 - [0,365] */

int tm_isdst; /* daylight savings time flag */

};

conţine timpul curent convertit în an, luna, zi, ore, minute, secunde.



  • Funcţia

struct tm * localtime(time_t * timeptr);

converteşte timpul conţinut într-o variabilă time_t în structura tm.


Probleme rezolvate

Problema 1. Să se completeze o variabilă de tipul tm cu informaţiile corespunzătoare şi să se afişeze aceste informaţii pe ecran. Se va completa mai întâi o variabila tip time_t cu funcţia time() şi apoi structura tip tm cu funcţia localtime(). Se va afişa timpul curent local şi cu funcţia ctime(). Se va afişa şi timpul GMT gmtime().

Programul ce rezolvă problema este următorul.


# include

# include


// functii de timp
int main()

{

time_t t1, t4;



struct tm t3;

struct tm * t2;

// calculeaza timpul

t1 = time(NULL);

printf("%s\n", ctime(&t1));

// calculeaza timpul local

t2 = localtime(&t1);

t3 = * t2;

printf("local time : %i:%i:%i\n", t3.tm_hour, t3.tm_min, t3.tm_sec);

// converteste structura tm în time_t

t4 = mktime(t2);

printf("%s\n", ctime(&t4));

// calculeaza timpul GMT

t2 = gmtime(&t1);

t3 = * t2;

printf("GMT time : %i:%i:%i\n", t3.tm_hour, t3.tm_min, t3.tm_sec);

return 0;

}
Rezultatele rulării programului sunt cele de mai jos.




Yüklə 0,56 Mb.

Dostları ilə paylaş:
1   ...   12   13   14   15   16   17   18   19   20




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin