Sunteți pe pagina 1din 4

MINISTERUL EDUCAIEI TINERETULUI I SPORTULUI AL REPUBLICII MOLDOVA

Facultatea Calculatoare, Informatic i Microelectronic Universitatea Tehnic a Moldovei

Catedra Calculatoare

Programare C++ Lucrare de laborator 2 Tema: Clase (constructori, destructori). Funcii i clase prietene.

A elaborat : A verificat :

Pantaz C.
Studenta anului II, grupa C-082

Plotnic C.
lector superior

Chiinu 2009 Scopul lucrrii: familiarizarea studenilor cu noiunea

de clase, utilizarea constructorilor, destructorilor, cu funcii i clase prietene. Sarcina : S se scrie un program n care se definete o clas stiv elementele creia snt de un tip abstract de date cu urmtoarele funcii: - emtz(Q) care cur stiva Q, - if_is_emptz(Q) care verific dac stiva Q este vid, - in_querz(Q,x) care adaug elementul x n stiva Q, - out_querz(Q,x) care scoate elementul x din stiva Q, - error(k) care indic eroarea cu numrul k (k=1 dac stiva este suprancrcat, k=2 dac stiva este vid). Listing:
#include<iost ream.h> #include<stdio .h> #include<conio.h> //- - - - - - - - - - - - - - - - - - - - int dim=15; class st iva { int in ; int ord; st iva *p; publ i c : st iva( ){} / / - - - - - - - - Metodele- - - - - - - - - - - - - - - - - - - - - - - st iva *s; int in_query( in t a, in t ord){ st iva *tem; i f (s==NULL) { s=new st iva ; s- >in=a; s- >ord=ord; s- >p=NULL; }else { tem=new st iva ; tem->in=a; tem->ord=ord; tem->p=s; s=tem; } return 0;

} int out_query(int *ord) { int a; if (error()!=2) {stiva *tem; a=s->in; *ord=s->ord; tem=s; s=s->p; delete tem; return a;}else {cout<<"\n"<<"Stiva este goala"; return NULL;} } void empty(){ while(s!=NULL) {stiva *tem; tem=s; s=s->p; delete tem; } cout<<"\n"<<"Stiva a fost curatita"; } int error(){ if(s->ord>(dim-2)){cout<<"\n Depasire de dimensiune \n";return 1;} if(s==NULL)return 2; return 0; } ~stiva() {} }; int main() { stiva ob1; int n,i=0; int ord; clrscr(); ob1.s=NULL; //---------Introducere-------------------------------cout<<"Introduceti elementul "<<i<<" al stivei :"; while (((n=getch())!=13)&&(ob1.error()!=1)) { printf("%d",n-48); ob1.in_query(n-48,i++); cout<<"\n"<<"Introduceti elementul "<<i<<" al stivei :"; } //----------------------------------------------------i-=1; //ob1.empty(); //---------Printare----------------------------while((n=ob1.out_query(&ord))!=NULL) cout<<"\n"<<"Elementul "<<i--<<" al stivei este :"<<n<<" si ordinea lui e: "<<ord; //----------------------------------------------------getch(); return 0;

Rezultatele:

Concluzii: n procesul de elaborare a programului am fcut cunotin cu noua structur de gestionare a datelor, anume clasa ce permite prelucrarea datelor sub form de obiecte, pstrnd integritatea lor i excuznd posibilitatea de prelucrare greit a datelor complexe identice (cu metode identice).