Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrare de laborator nr.2
Programare in C++
VARIANTA 7
A verificat:
Mititelu Vitalie
Chisinau 2019
LUCRARE DE LABORATOR NR. 2
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.
Listingul programului:
a)
#include <iostream>
Set(){};
value.nrelem = this->nrelem;
value.elem = new int[this->nrelem + right.nrelem];
int i;
if (c == 1)
{
return 1;
}
else
return 0;
}
else
cout << "Dati alte multimi" << endl;
return 0;
}
return out;
}
return in;
}
}
if(v==1){
cout<<"Apartine multimii"<<endl;
}
else cout<<"Nu apartine multimii"<<endl;
}
};
int main()
{
Set s1;
cin >> s1;
Set s2;
cin >> s2;
int option;
do
{
cout << endl;
cout << "1:Reuniunea" << endl;
cout << "2:Intersectie" << endl;
cout << "3:Scaderea" << endl;
cout << "4:Adaugarea in multime" << endl;
cout << "5:Echivalenta multimilor" << endl;
cout << "6:Verificarea apartenentei" << endl;
cout << "7:Exit" << endl;
cout << "Alegeti optiunea=";
cin >> option;
cout << endl;
switch (option)
{
case 1:
{
Set s3;
s3 = s1 + s2;
cout << s3;
}
break;
case 2:
{
Set s4;
s4 = s1 * s2;
cout << s4;
}
break;
case 3:
{
Set s5;
s5 = s1 - s2;
cout << s5;
}
break;
case 4:
{
cout<<s2;
int numar;
cout << "Dati nr.elem de adaugat=";
cin >> numar;
s2 += numar;
cout << s2;
}
break;
case 5:
{
cout << s1;
cout << s2;
cout << "Echivalenta prima multime si a doua multime" << (s1 == s2)
<< endl;
}
break;
case 6:
{
cout<<s1;
int valoare;
cout<<"Dati valoare de verificat=";
cin>>valoare;cout<<endl;
s1.check(valoare);
}
break;
case 7:;
break;
default:
cout << "Alegeti alta optiune" << endl;
}
return 0;
}
b)
#include<conio.h>
#include<iostream>
#include<iomanip>
#include<stdlib.h>
class matrix
{
private:
double **p;
int rind,col,cod_eror;
public:
matrix();
matrix(int);
matrix(int,int);
~matrix();
void afisare()
{
for (int i = 0; i < rind; i++)
{
cout<<" ";
for (int j = 0; j < col; j++)
cout<<setw(5)<<p[i][j]<<" ";
cout<<endl;
}
}
matrix :: matrix()
{
p=NULL;
rind=col=0;
};
matrix :: matrix(int n)
{
rind=col=n;
p=new double*[rind];
for (int i = 0; i < rind; i++)
{
p[i]=new double[rind];
for (int j = 0; j < rind; j++)
p[i][j]=0;
}
}
matrix ::~matrix()
{
for (int i=0; i < rind; i++)
for (int j = 0; j < col; j++)
delete[] p[j];
delete [] p;
}
void inmultirea_2matrici()
{
int l1,c1,l2,c2,s;
sus:
system("CLS");
cout<<"Introdu dimensiunea matriciei I:"<<endl;
cout<<"Linii= ";cin>>l1;
cout<<"Coloane= ";cin>>c1;
cout<<"Introdu dinemsiunea matrici II:"<<endl;
cout<<"Linii= ";cin>>l2;
cout<<"Coloane= ";cin>>c2;
if (c1!=l2)
{
cout<<endl<<"Nu se poate efectua inmultirea matricilor
!"<<endl<<"Introdu alte dimesiuni";
goto sus;
}
else
{
matrix mat1(l1,c1);
matrix mat2(l2,c2);
cout<<"Introdu elementele I matrici: "<<endl;
for (int i = 0; i < l1; i++)
{
for (int j = 0; j < c1; j++)
{
cout<<"M1["<<i<<"]["<<j<<"]= ";
cin>>s;
mat1.inscriere(i,j,s);
}
}
matrix matf(l1,c2);
for (int i = 0; i < l1; i++)
for (int j = 0; j < c2; j++)
{
for (int k = 0; k < l1; k++)
s+=mat1.valoare(i,k)*mat2.valoare(k,j);
matf.inscriere(i,j,s);
s=0;
}
cout<<endl<<"Iata matricea rezultanta "<<endl;
matf.afisare();
}
getch();
}
void inmultirea_numar()
{
int l,c,s,nr;
system("CLS");
cout<<"Introdu dimensiunea matrici: "<<endl;
cout<<"Linii= ";
cin>>l;
cout<<"Coloane= ";
cin>>c;
matrix matr_nr(l,c);
for (int i = 0; i < l; i++)
for (int j = 0; j < c; j++)
{
cout<<"M["<<i<<"]["<<j<<"]= ";
cin>>s;
matr_nr.inscriere(i,j,s);
}
cout<<endl<<"Matricia dreptunghiulara: "<<endl;
matr_nr.afisare();
cout<<"Inmulteste cu numarul: ";
cin>>nr;
matrix matr_rsp(l,c);
for (int i = 0; i < l; i++)
{
for (int j = 0; j < c; j++)
{
matr_rsp.inscriere(i,j,matr_nr.valoare(i,j)*nr);
}
}
cout<<endl<<"Raspuns:"<<endl;
matr_rsp.afisare();
getch();
}
void adunarea_2matrici()
{
int l1,c1,l2,c2,s;
sus:
system("CLS");
cout<<"Introdu dimensiunea matriciei I:"<<endl;
cout<<"Linii= ";cin>>l1;
cout<<"Coloane= ";cin>>c1;
cout<<"Introdu dinemsiunea matrici II:"<<endl;
cout<<"Linii= ";cin>>l2;
cout<<"Coloane= ";cin>>c2;
if ((l1!=l2)&&(c1!=c2))
{
cout<<endl<<"Nu se poate efectua adunarea matricilor !"<<endl<<"Introdu
alte dimesiuni";
goto sus;
}
else
{
matrix mat1(l1,c1);
matrix mat2(l2,c2);
cout<<"Introdu elementele I matrici: "<<endl;
for (int i = 0; i < l1; i++)
{
for (int j = 0; j < c1; j++)
{
cout<<"M1["<<i<<"]["<<j<<"]= ";
cin>>s;
mat1.inscriere(i,j,s);
}
}
matrix matf(l1,c2);
for (int i = 0; i < l1; i++)
for (int j = 0; j < c1; j++)
{
s=mat1.valoare(i,j)+mat2.valoare(i,j);
matf.inscriere(i,j,s);
s=0;
}
cout<<endl<<"Iata matricea rezultanta "<<endl;
matf.afisare();
}
getch();
}
void scaderea_2matrici()
{
int l1,c1,l2,c2,s;
sus:
system("CLS");
cout<<"Introdu dimensiunea matriciei I:"<<endl;
cout<<"Linii= ";cin>>l1;
cout<<"Coloane= ";cin>>c1;
cout<<"Introdu dinemsiunea matrici II:"<<endl;
cout<<"Linii= ";cin>>l2;
cout<<"Coloane= ";cin>>c2;
if ((l1!=l2)&&(c1!=c2))
{
cout<<endl<<"Nu se poate efectua inmultirea matricilor
!"<<endl<<"Introdu alte dimesiuni";
goto sus;
}
else
{
matrix mat1(l1,c1);
matrix mat2(l2,c2);
cout<<"Introdu elementele I matrici: "<<endl;
for (int i = 0; i < l1; i++)
{
for (int j = 0; j < c1; j++)
{
cout<<"M1["<<i<<"]["<<j<<"]= ";cin>>s;
mat1.inscriere(i,j,s);
}
}
matrix matf(l1,c2);
for (int i = 0; i < l1; i++)
for (int j = 0; j < c1; j++)
{
s=mat1.valoare(i,j)-mat2.valoare(i,j);
matf.inscriere(i,j,s);
s=0;
}
cout<<endl<<"Iata matricea rezultanta "<<endl;
matf.afisare();
}
getch();
}
int main()
{
char com;
while(true)
{
system("CLS");
a)
b)