infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: Adriana Maria din Martie 21, 2017, 15:46:10



Titlul: Supraincarcare operatori
Scris de: Adriana Maria din Martie 21, 2017, 15:46:10
Hello.Am urmatoarea problema:
Scrieti o clasa Matrix. Elementele sunt de tip intreg.
-        Pentru simplificare se considera matricea patratica
-        Elementele se citesc de la tastatura

Se permit opratiile:
Matrix  a;
Matrix  b;
Matrix c(a);
Matrix d = a;
Matrix e = a + b;

De ce primesc eroare de segmentation fault?Codul este acesta:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<stdio.h>
#include<string.h>

using namespace std;

class matrix
{ private:
  int n;
  int p[3][3];
 
 public:
   
   void citire(int n);
   void afisare();
   
  matrix(int x)
  {n=x;
  };
  matrix(const matrix &obj);
  ~matrix() {}   


matrix operator = (matrix m2);
matrix operator + (matrix m2);
};

matrix::matrix(const matrix &obj)
{ int i,j;
   for(i=0;i<n;i++)
    {for(j=0;j<n;j++)
      p[j]=obj.p[j];
   }
}

void matrix::citire(int n)
 {int i,j;
    for(i=0;i<n;i++)
      { for(j=0;j<n;j++)
         cin>>p[j];
      }
 }
 
 void matrix::afisare()
 {int i,j;
    for(i=0;i<n;i++)
      { for(j=0;j<n;j++)
         cout<<p[j];
      }
 }
 
 matrix matrix::operator + (matrix m2)
 {  int i,j;
    for(i=0;i<n;i++)
    { for(j=0;j<n;j++)
       p[j]=m2.p[j] + p[j];
    }
   
 }
 
matrix matrix::operator = (matrix m2)
 { int i,j;
    for(i=0;i<n;i++)
    {for(j=0;j<n;j++)
      p[j]=m2.p[j];
     }
    return *this;
 }
 
int main()
{
  matrix a(2);
  a.citire(2);
 
  cout<<"-------"<<endl;
  matrix c(a);
  matrix d(2);
  d=a;
  d.afisare();
  ~matrix d;
  ~matrix a;
  }