PHP Code:
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <new>
using namespace std;
class matrix
{
int r,c;
int **a;
public:
matrix();
matrix(matrix &);
~matrix();
friend istream &operator >>(istream &, matrix &);
friend ostream &operator <<(ostream &, matrix &);
friend matrix &operator +(const matrix &, const matrix &);
friend matrix operator *(const matrix &, const matrix &);
};
matrix::matrix()
{
}
matrix::matrix(matrix &p)
{
int i,j;
c=p.c;
r=p.r;
a=new int*[r];
for(i=0;i<c;i++)
{
a[i]=new int [c];
}
for(i=0;i<r;i++)
for(j=0;j<c;j++)
a[i][j]=p.a[i][j];
}
matrix::~matrix()
{
for(int i=0;i<r;i++)
delete []a[i];
delete[]a;
}
istream &operator >>(istream &nhap, matrix &p)
{
int i,j;
cout<<"\nNhap so hang: ";
cin>>p.r;
cout<<"\nNhap so cot: ";
cin>>p.c;
p.a=new int*[p.r];
for(i=0;i<p.c;i++)
{
p.a[i]=new int [p.c];
}
if(p.a==NULL)
{
cout<<"\nKhong du bo nho!";
exit(1);
}
for(i=0;i<p.r;i++)
for(j=0;j<p.c;j++)
{
cout<<"\nNhap phan tu thu a["<<i<<"]["<<j<<"]: ";
cin>>p.a[i][j];
}
return nhap;
}
ostream &operator <<(ostream &xuat, matrix &p)
{
for(int i=0;i<p.r;i++)
{
for(int j=0;j<p.c;j++)
cout<<setw(3)<<p.a[i][j];
cout<<endl;
}
return xuat;
}
matrix &operator +(const matrix &p1, const matrix &p2)
{
int i,j;
if(p1.c==p2.c&&p1.r==p2.r)
{
matrix p;
p.c=p1.c;
p.r=p1.r;
p.a=new int *[p.r];
for(i=0;i<p.c;i++)
p.a[i]=new int [p.r];
for(i=0;i<p.r;i++)
for(j=0;j<p.c;j++)
p.a[i][j]=p1.a[i][j]+p2.a[i][j];
return p;
}
else
cout<<"\nMa tran khong cung cap!";
}
matrix operator *(const matrix &p1,const matrix &p2)
{
int i,j,k;
if(p1.c==p2.c&&p1.r==p2.r)
{
matrix p;
p.c=p1.c;
p.r=p1.r;
p.a=new int *[p.r];
for(i=0;i<p.c;i++)
p.a[i]=new int [p.r];
for(i=0;i<p.r;i++)
for(j=0;j<p.c;j++)
{
p.a[i][j]=0;
for(k=1;k<=p.c;k++)
{
p.a[i][j]+=p1.a[i][k]*p2.a[k][j];
}
}
return p;
}
else
cout<<"\nMa tran khong cung cap!";
}
int main()
{
matrix p,p1;
cout<<"\nNhap ma tran p1 \n";
cin>>p1;
cout<<"\nXuat ma tran p1: \n"<<p1;
matrix p2(p1);
cout<<"xuat ma tran p2 \n"<<p2;
p=p1+p2;
cout<<"\nTong hai ma tan la: \n"<<p;
p1=p1*p2;
cout<<"\nTich hai ma tran la: \n: "<<p;
p1.~matrix();
p2.~matrix();
p.~matrix();
getch();
return 0;
}
nó chạy đến đây thì bị văng ra. hình như là lỗi truy cập vào bộ nhớ đã xóa. nếu xóa hàm
~matrix
thì ok nhưng yêu cầu đề bài phải có. biết lỗi nhưng không sửa được. ai biết chỉ cho mình với nha.
Comment