Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrarea de laborator Nr.2
La Programarea Orientata pe Obiecte
Tronciu Alexandru
Lisnic Inga
Varianta 12
а) Să se creeze clasa Set – mulţimea numerelor întregi, utilizînd memoria dinamică. Să se
definească constructorii: implicit şi de copiere. Să se definească funcţiile: de adăugare a unui
element nou în mulţime; de determinare a apartenenţei elementului la mulţime; de adunare,
scădere şi intersecţie a două mulţimi.
b) Să se creeze clasa Matrix – matrice. Clasa conţine pointer spre Complex, numărul de rînduri şi
de coloane şi o variabilă – codul erorii. Să se definească constructorul fără parametri
(constructorul implicit), constructorul cu un parametru – matrice pătrată şi constructorul cu doi
parametri – matrice dreptunghiulară ş. a. Să se definească funcţiile membru de acces:
returnarea şi setarea valorii elementului (i,j). Să se definească funcţiile de adunare şi scădere a
două matrice; înmulţirea unei matrice cu alta; înmulţirea unei matrice cu un număr. Să se
testeze funcţionarea clasei. În caz de insuficienţă de memorie, necorespondenţă a
dimensiunilor matricelor, depăşire a limitei memoriei utilizate să se stabilească codul erorii.
Punctul a)
Codul programului
#include <iostream>
#include <stdlib.h>
class Set
public:
int *mult;
int inserare()
return ceva;
int rasp = 0;
if (numar == mult[i])
rasp++;
return rasp;
Set();
~Set();
private:
int ceva;
};
Set::Set()
Set::~Set()
delete[] mult;
int aleg, n;
cin >> n;
int multime[n];
Set a[n];
multime[i] = a[i].inserare();
while (loop)
system("CLS");
switch (aleg)
case 0:
loop = 0;
break;
case 1:
system("CLS");
cout << "Dati multimea in care vreti sa adaugati noi elemente: ";
system("PAUSE");
break;
case 2:
system("CLS");
dar = a[i].Apartenenta(nr);
if (dar == 0)
cout << "Acest numar nu apartine multimei " << i + 1 << "!" << endl;
cout << "In multimea " << i + 1 << " numarul dat il intalnesti de " << dar << " ori! " << endl;
else
cout << "In multimea " << i + 1 << " numarul dat a fost intalnit odata!" << endl;
system("PAUSE");
break;
case 3:
system("CLS");
int j, d, size;
j = d = 0;
cout << "Dati cele doua multimi care vor fi adunate: ";
j++;
else
d++;
system("PAUSE");
break;
case 4:
system("CLS");
cout << "Dati cele doua multimi care vor fi scazute: ";
dab = 0;
dab--;
dab++;
system("PAUSE");
break;
case 5:
system("CLS");
cout << "Dati cele doua multimi care vor fi intersectate: ";
int ok;
ok = 0;
ok++;
system("PAUSE");
break;
case 6:
system("CLS");
a[i].afisare(multime[i]);
system("PAUSE");
break;
default:
break;
return 0;
}
Crearea multimilor de numere
Meniul principal
Functia de adaugare a unui element nou
Adunarea multimilor
Scaderea multimilor
Intersectia multimilor
Punctul b)
Codul programului:
#include <iostream>
#include <stdlib.h>
int i, j, k;
struct complex
int x, y;
};
class Matrix
public:
complex **ceva;
int numar_randuri;
int numar_coloane;
void Afis()
cout << ceva[i][j].x << " " << ceva[i][j].y << "|";
}
void insert_data()
void setare()
Matrix();
Matrix(int b);
~Matrix();
};
int i, j, x;
c[i][j].x = 0;
c[i][j].y = 0;
Matrix::Matrix()
setare();
i = numar_randuri;
j = numar_coloane;
Matrix::Matrix(int b)
i = b;
numar_randuri = i;
j = b;
numar_coloane = j;
i = baka;
numar_randuri = i;
j = d;
numar_coloane = j;
Matrix::~Matrix()
delete[] ceva;
Matrix iomaio;
cout << "Crearea primului obiect prin constructorul implicit!" << endl;
iomaio.insert_data();
cout << "Crearea celui deal doilea obiect prin constructorul cu un parametru!" << endl;
Matrix eba(2);
eba.insert_data();
cout << "Crearea celui deal treailea obiect prin constructorul cu doi parametrii!" << endl;
Matrix san(3, 2);
san.insert_data();
int loop = 1;
while (loop)
system("CLS");
switch (aleg)
case 0:
system("CLS");
loop = 0;
break;
case 1:
system("CLS");
cout << "Alegeti doua matrici pe care vreti sa le adunati:\n1-Matricea creata prin constructorul
implicit "
sic.Afis();
else
sic.Afis();
else
{
sic.ceva[i][j].x = iomaio.ceva[i][j].x + san.ceva[i][j].x;
sic.Afis();
else
system("PAUSE");
break;
case 2:
system("CLS");
cout << "Alegeti doua matrici pe care vreti sa le scadeti:\n1-Matricea creata prin constructorul
implicit "
sic.Afis();
else
}
cout << endl;
sic.Afis();
else
sic.Afis();
else
}
system("PAUSE");
break;
case 3:
system("CLS");
cout << "Alegeti doua matrici pe care vreti sa le inmultiti:\n1-Matricea creata prin constructorul
implicit "
cout << i << ":" << indi.ceva[i][j].x << " " << indi.ceva[i][j].y << "|";
else
cout << i << ":" << indi.ceva[i][j].x << " " << indi.ceva[i][j].y << "|";
else
cout << i << ":" << indi.ceva[i][j].x << " " << indi.ceva[i][j].y << "|";
else
system("PAUSE");
break;
case 4:
system("CLS");
cout << "Alegeti matricea pe care vreti sa o inmultiti:\n1-Matricea creata prin constructorul
implicit\n2-Matricea creata prin constructorul cu un parametru\n3-Matricea creata prin constructorul
cu doi parametrii" << endl;
if (aleg2 == 1)
{
iomaio.ceva[i][j].x = iomaio.ceva[i][j].x * aleg3;
iomaio.Afis();
if (aleg2 == 2)
eba.Afis();
if (aleg2 == 3)
}
}
san.Afis();
system("PAUSE");
break;
default:
break;
return 0;
}
Crearea matricilor
Scaderea matricilor
Inmultirea matricilor
1) Initierea inseamna crearea obiectului si alocarea memoriei pentru el cat si itroducerea datelor
daca este necesar.
2) Pentru definirea constructorului se foloseste aceeasi definire a denumirii ca si a clasei, iar a
destructorului aceasta denumire este precedata de tilda ( ~ ).
3) Nu, constructorul nu returneaza nici o valoare.El nici tip nu are.
4) Clasele trebuie sa contina constructore. Dar exista clase si fara constructori.
5) Clasele pot avea nenumarate constructori, insa destructori numai unul. Pentru ca constructorii
pot fi supraincarcati iar destructorii nu.
6) Implicit, de copiere, cu parametrii, de convertire, general.
7) Constructorul se apeleaza odata ce se creaza o variabila in main.
8) Pentru a salva o copie a obiectului.
9) Pentru a schimba tipul datelor.
10) A copia datele unui obiect, a crea o copie.
Sintaxa: Nume_Constructor(Nume_clasa const &t)();
11) Lista de initializare sunt o lista de mai multi constructori folositi pentru o clasa.
12) Cand clasa nu contine nici un constructor atunci este definit constructorul implicit obligatoriu.