Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <iostream>
- using namespace std;
- struct List {
- int linie;
- int coloana;
- int element;
- };
- class Matrice {
- private:
- List *vector;
- int **p,linii,coloane;
- public:
- Matrice(int linii = 0, int coloane = 0) {
- vector = new List[linii*coloane];
- this->linii = linii;
- this->coloane = coloane;
- p = Alocare(linii, coloane);
- }
- Matrice (const Matrice & matrice) {
- if (matrice.linii != 0 && matrice.coloane != 0) {
- this->linii = matrice.linii;
- this->coloane = matrice.coloane;
- this->p = Alocare(linii, coloane);
- this->vector = new List[linii*coloane];
- int contor_vector = 0;
- for (int i = 0; i < linii; i++) {
- for (int j = 0; j < coloane; j++) {
- this->p[i][j] = matrice.p[i][j];
- this->vector[contor_vector].coloana = matrice.vector[contor_vector].coloana;
- this->vector[contor_vector].linie = matrice.vector[contor_vector].linie;
- this->vector[contor_vector].element = matrice.vector[contor_vector].element;
- contor_vector++;
- }
- }
- }
- }
- int **Alocare(int linii, int coloane);
- void Citire();
- void Afisare();
- void ModificaElement(int linie, int coloana,int element);
- friend void Suma(Matrice A, Matrice B);
- ~Matrice ();
- };
- int ** Matrice::Alocare(int linii, int coloane) {
- int **pointer;
- if((pointer = new int*[linii]) == NULL){;
- cout << "Nu s-a gasit memorie.";
- _getch();
- exit(0);
- }
- for (int i = 0; i < linii; i++)
- if ((pointer[i] = new int[coloane]) == NULL) {
- cout << "Nu s-a gasit memorie.";
- _getch();
- exit(0);
- }
- return pointer;
- }
- void Matrice::Citire() {
- if (linii != 0 && coloane != 0) {
- int contor_vector = 0;
- for (int i = 0; i < linii; i++) {
- cout << "Linia " << i << ":" << endl;
- for (int j = 0; j < coloane; j++) {
- cout << "Matrice[" << i << "]" << "[" << j << "] = ";
- cin >> p[i][j];
- vector[contor_vector].coloana = j;
- vector[contor_vector].linie = i;
- vector[contor_vector].element = p[i][j];
- contor_vector++;
- }
- cout << endl;
- }
- }
- }
- void Matrice::Afisare() {
- if (linii != 0 && coloane != 0)
- for (int i = 0; i < linii; i++) {
- for (int j = 0; j < coloane; j++) {
- cout << p[i][j] << " ";
- }
- cout << endl;
- }
- }
- void Matrice::ModificaElement(int linie, int coloana,int element) {
- if (linii != 0 && coloane != 0) {
- if ((linie >= 0 && linie <= linii) && (coloana >= 0 && coloana <= coloane)) {
- p[linie][coloana] = element;
- int contor_vector = 0;
- for (int i = 0; i < linie; i++)
- for (int j = 0; j < coloana; j++)
- contor_vector++;
- vector[contor_vector].element = element;
- }
- }
- }
- Matrice ::~Matrice ()
- {
- delete[] p;
- p = NULL;
- delete[] vector;
- vector = NULL;
- cout << "\nObiectul a fost sters" << endl;
- }
- void Suma(Matrice A, Matrice B) {
- if (A.linii == B.linii && A.coloane == B.coloane) {
- int contor_vector = 0;
- cout << endl << "Suma:" << endl;
- for (int i = 0; i < A.linii; i++) {
- for (int j = 0; j < A.coloane; j++) {
- cout << A.vector[contor_vector].element + B.vector[contor_vector].element << " ";
- contor_vector++;
- }
- cout << endl;
- }
- }
- }
- void main() {
- Matrice Frentzy(3, 3);
- Frentzy.Citire();
- cout << endl;
- Frentzy.Afisare();
- Matrice Coordonare(Frentzy);
- cout << endl;
- Coordonare.Afisare();
- // Coordonare.ModificaElement(2, 2,10);
- // Coordonare.ModificaElement(0, 0, 11);
- // Coordonare.Afisare();
- cout << endl;
- Suma(Frentzy, Coordonare);
- _getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement