Advertisement
frentzy

bilet 18, Cosmin

Apr 17th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct List {
  8.     int linie;
  9.     int coloana;
  10.     int element;
  11. };
  12.  
  13. class Matrice {
  14. private:
  15.     List *vector;
  16.     int **p,linii,coloane;
  17. public:
  18.     Matrice(int linii = 0, int coloane = 0) {
  19.         vector = new List[linii*coloane];
  20.         this->linii = linii;
  21.         this->coloane = coloane;
  22.         p = Alocare(linii, coloane);
  23.     }
  24.     Matrice (const Matrice & matrice) {
  25.         if (matrice.linii != 0 && matrice.coloane != 0) {
  26.             this->linii = matrice.linii;
  27.             this->coloane = matrice.coloane;
  28.             this->p = Alocare(linii, coloane);
  29.             this->vector = new List[linii*coloane];
  30.             int contor_vector = 0;
  31.  
  32.             for (int i = 0; i < linii; i++) {
  33.                 for (int j = 0; j < coloane; j++) {
  34.                     this->p[i][j] = matrice.p[i][j];
  35.                     this->vector[contor_vector].coloana = matrice.vector[contor_vector].coloana;
  36.                     this->vector[contor_vector].linie = matrice.vector[contor_vector].linie;
  37.                     this->vector[contor_vector].element = matrice.vector[contor_vector].element;
  38.                     contor_vector++;
  39.                 }
  40.             }
  41.         }
  42.     }
  43.     int **Alocare(int linii, int coloane);
  44.     void Citire();
  45.     void Afisare();
  46.     void ModificaElement(int linie, int coloana,int element);
  47.     friend void Suma(Matrice A, Matrice B);
  48.     ~Matrice ();
  49. };
  50.  
  51. int ** Matrice::Alocare(int linii, int coloane) {
  52.     int **pointer;
  53.     if((pointer = new int*[linii]) == NULL){;
  54.         cout << "Nu s-a gasit memorie.";
  55.         _getch();
  56.         exit(0);
  57.     }
  58.     for (int i = 0; i < linii; i++)
  59.         if ((pointer[i] = new int[coloane]) == NULL) {
  60.             cout << "Nu s-a gasit memorie.";
  61.             _getch();
  62.             exit(0);
  63.         }
  64.  
  65.     return pointer;
  66. }
  67.  
  68. void Matrice::Citire() {
  69.     if (linii != 0 && coloane != 0) {
  70.         int contor_vector = 0;
  71.         for (int i = 0; i < linii; i++) {
  72.             cout << "Linia " << i << ":" << endl;
  73.             for (int j = 0; j < coloane; j++) {
  74.                 cout << "Matrice[" << i << "]" << "[" << j << "] = ";
  75.                 cin >> p[i][j];
  76.                 vector[contor_vector].coloana = j;
  77.                 vector[contor_vector].linie = i;
  78.                 vector[contor_vector].element = p[i][j];
  79.                 contor_vector++;
  80.             }
  81.             cout << endl;
  82.         }
  83.     }
  84. }
  85.  
  86. void Matrice::Afisare() {
  87.     if (linii != 0 && coloane != 0)
  88.         for (int i = 0; i < linii; i++) {
  89.             for (int j = 0; j < coloane; j++) {
  90.                 cout << p[i][j] << " ";
  91.         }
  92.         cout << endl;
  93.     }
  94. }
  95.  
  96. void Matrice::ModificaElement(int linie, int coloana,int element) {
  97.     if (linii != 0 && coloane != 0) {
  98.         if ((linie >= 0 && linie <= linii) && (coloana >= 0 && coloana <= coloane)) {
  99.             p[linie][coloana] = element;
  100.             int contor_vector = 0;
  101.             for (int i = 0; i < linie; i++)
  102.                 for (int j = 0; j < coloana; j++)
  103.                     contor_vector++;
  104.  
  105.             vector[contor_vector].element = element;
  106.         }
  107.        
  108.     }
  109. }
  110.  
  111. Matrice ::~Matrice ()
  112. {          
  113.     delete[] p;
  114.     p = NULL;
  115.     delete[] vector;
  116.     vector = NULL;
  117.     cout << "\nObiectul a fost sters" << endl;
  118. }
  119.  
  120. void Suma(Matrice A, Matrice B) {
  121.     if (A.linii == B.linii && A.coloane == B.coloane) {
  122.         int contor_vector = 0;
  123.         cout << endl << "Suma:" << endl;
  124.         for (int i = 0; i < A.linii; i++) {
  125.             for (int j = 0; j < A.coloane; j++) {
  126.                 cout << A.vector[contor_vector].element + B.vector[contor_vector].element << " ";
  127.                 contor_vector++;
  128.             }
  129.             cout << endl;
  130.         }
  131.     }
  132.  
  133. }
  134.  
  135.  
  136. void main() {
  137.     Matrice Frentzy(3, 3);
  138.     Frentzy.Citire();
  139.     cout << endl;
  140.     Frentzy.Afisare();
  141.     Matrice Coordonare(Frentzy);
  142.     cout << endl;
  143.     Coordonare.Afisare();
  144. //  Coordonare.ModificaElement(2, 2,10);
  145. //  Coordonare.ModificaElement(0, 0, 11);
  146. //  Coordonare.Afisare();
  147.     cout << endl;
  148.     Suma(Frentzy, Coordonare);
  149.  
  150.     _getch();
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement