You are on page 1of 5

#include <iostream>

#include <stdlib.h>
using namespace std;

class Matrix
{
public:
float **numar;
int nr_rand;
int nr_coloane;
char codul[38] = "Eroare la necorespondenta matricilor";
Matrix();
Matrix(int s);
Matrix(int s, int d);
~Matrix();
int setare(int d)
{
if (d == 1)
return nr_rand;
if (d == 2)
return nr_coloane;
}
};
Matrix::Matrix()
{
int ceva;
cout << "Dati numarul de randuri: " << endl;
cin >> nr_rand;
cout << "Dati numarul de coloane: " << endl;
cin >> nr_coloane;
numar = new float *[nr_coloane];
for (int i = 0; i < nr_coloane; i++)
numar[i] = new float[nr_rand];
cout << "Doriti sa umpleti matricea sau sa fie goala:\n1-Plina\n2-Goala" <<
endl;
cin >> ceva;
if (ceva == 1)
{
for (int j = 0; j < nr_rand; j++)
{
for (int i = 0; i < nr_coloane; i++)
{
cout << j << ":" << i << "=";
cin >> numar[j][i];
}
cout << endl;
}
}
{
for (int j = 0; j < nr_rand; j++)
{
for (int i = 0; i < nr_coloane; i++)
{
numar[i][j] = 0;
}
}
}
}
Matrix::Matrix(int s)
{
nr_rand = s;
nr_coloane = s;
numar = new float *[nr_coloane];
for (int i = 0; i < nr_coloane; i++)
numar[i] = new float[nr_rand];
for (int j = 0; j < nr_rand; j++)
for (int i = 0; i < nr_coloane; i++)
{
cout << j << ":" << i << "=";
cin >> numar[j][i];
cout << endl;
}
}
Matrix::Matrix(int s, int d)
{
nr_rand = s;
nr_coloane = d;
numar = new float *[nr_coloane];
for (int i = 0; i < nr_coloane; i++)
numar[i] = new float[nr_rand];
for (int j = 0; j < nr_rand; j++)
for (int i = 0; i < nr_coloane; i++)
{
cout << j << ":" << i << "=";
cin >> numar[j][i];
cout << endl;
}
}
Matrix::~Matrix()
{
delete[] numar;
delete[] numar;
cout << "Destructorul a fost apelat!" << endl;

}
float Adunare(float a, float b)
{
return a + b;
}
float Scadere(float a, float b) { return a - b; }
void Inmultire(int number, Matrix a)
{
cout << "Matricea Obtinuta" << endl;
for (int i = 0; i < a.nr_rand; i++)
{
for (int j = 0; j < a.nr_coloane; j++)
{
a.numar[i][j] = a.numar[i][j] * number;
cout << a.numar[i][j] << " ";
}
cout << endl;
}
}
int main(int argc, const char **argv)
{
int loop = 1;
int i, j, r, c, aleg, aleg1, aleg2, Numar;
Matrix ha, hah(4), haha(2, 3);
cout << "Acum o sa creati o matrice goala pentru operatia de scadere si
adunare" << endl;
Matrix hehe;
for (; loop != 0;)
{
system("CLS");
cout << "0.Exit" << endl;
cout << "1.Setarea lui i,j" << endl;
cout << "2.Functia de adunare a doua matrici." << endl;
cout << "3.Functia de scadere a doua matrici." << endl;
cout << "4.Functia de inmultire a matricii cu un numar" << endl;
cin >> aleg;
switch (aleg)
{
case 0:
loop = 0;
cout << "Goodbye!" << endl;
break;
case 1:
cout << "Alegeti pentru care matrice doriti sa obtineti i si j:\n1-
Matricea 1 creat cu constructor implicit!" << endl;
cout << "2-Matricea 2 creat cu constructorul cu un parametru!\n3-
Matricea 3 creat cu constructorul cu doi parametrii!" << endl;
cin >> aleg2;
if (aleg2 == 1)
{
cout << "Ce vreti sa obtineti?\n1-Randuri\n2-Coloane\n3-Ambele" <<
endl;
cin >> aleg1;
if (aleg1 == 3)
{
r = hah.setare(1);
c = hah.setare(2);
cout << "Nr.Randuri:" << r << endl;
cout << "Nr.Coloane:" << c << endl;
}
else if (aleg1 == 2)
{
c = hah.setare(aleg1);
cout << "Nr.Coloane:" << c << endl;
}
else if (aleg1 == 1)
{
r = hah.setare(aleg1);
cout << "Nr.Randuri:" << r << endl;
}
}
else if (aleg2 == 2)
{
cout << "Ce vreti sa obtineti?\n1-Randuri\n2-Coloane\n3-Ambele" <<
endl;
cin >> aleg1;
if (aleg1 == 3)
{
r = hah.setare(1);
c = hah.setare(2);
cout << "Nr.Randuri:" << r << endl;
cout << "Nr.Coloane:" << c << endl;
}
else if (aleg1 == 2)
{
c = hah.setare(aleg1);
cout << "Nr.Coloane:" << c << endl;
}
else if (aleg1 == 1)
{
r = hah.setare(aleg1);
cout << "Nr.Randuri:" << r << endl;
}
}
else if (aleg2 == 3)
{
cout << "Ce vreti sa obtineti?\n1-Randuri\n2-Coloane\n3-Ambele" <<
endl;
cin >> aleg1;
if (aleg1 == 3)
{
r = hah.setare(1);
c = hah.setare(2);
cout << "Nr.Randuri:" << r << endl;
cout << "Nr.Coloane:" << c << endl;
}
else if (aleg1 == 2)
{
c = hah.setare(aleg1);
cout << "Nr.Coloane:" << c << endl;
}
else if (aleg1 == 1)
{
r = hah.setare(aleg1);
cout << "Nr.Randuri:" << r << endl;
}
}
break;
case 2:

cout << "Alegeti matricile:\n1-Matricea 1 si Matricea 2\n 2-Matricea 2


si Matricea 3\n3-Matricea 1 si Matricea 3" << endl;
cin >> aleg2;
if (ha.nr_coloane == hah.nr_coloane && ha.nr_rand == hah.nr_rand)
{
system("CLS");
cout << "Matricea Obtinuta:" << endl;
for (int i = 0; i < ha.nr_rand; i++)
{
for (int j = 0; j < hah.nr_coloane; j++)
{
hehe.numar[i][j] = Adunare(ha.numar[i][j], hah.numar[i]
[j]);
cout << hehe.numar[i][j] << " ";
}
cout << endl;
}
}
else
cerr << hehe.codul << endl;
system("PAUSE");
break;
case 3:
cout << "Alegeti matricile:\n1-Matricea 1 si Matricea 2\n 2-Matricea 2
si Matricea 3\n3-Matricea 1 si Matricea 3" << endl;
cin >> aleg2;
if (ha.nr_coloane == hah.nr_coloane && ha.nr_rand == hah.nr_rand)
{
system("CLS");
cout << "Matricea Obtinuta:" << endl;
for (int i = 0; i < ha.nr_rand; i++)
{
for (int j = 0; j < hah.nr_coloane; j++)
{
hehe.numar[i][j] = Scadere(ha.numar[i][j], hah.numar[i]
[j]);
cout << hehe.numar[i][j] << " ";
}
cout << endl;
}
}
else
cerr << hehe.codul << endl;
system("PAUSE");
break;
case 4:
system("CLS");
cout << "Alegeti Matricea:(1|2|3)" << endl;
cin >> aleg2;
if (aleg2 == 1)
{
cout << "Dati numarul: " << endl;
cin >> Numar;
Inmultire(Numar, ha);
}
if (aleg2 == 2)
{
cout << "Dati numarul: " << endl;
cin >> Numar;
Inmultire(Numar, hah);
}
if (aleg2 == 3)
{
cout << "Dati numarul: " << endl;
cin >> Numar;
Inmultire(Numar, haha);
}
system("PAUSE");
break;
defautl:
break;
}
}
return 0;
}

You might also like