Mình viết code này vẫn chạy bình thường nhưng không xuất ra kết quả cộng 2 matrix được. Mong cả nhà ai biết chỉ giáo giúp vớ, hôm trước mình code nối 2 chuỗi vẫn không xuất ra được kết quả. Code of mình ở dưới:
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
//--------Menu------------------
void menu()
{
cout<<"\n0: Thoat";
cout<<"\n1: Nhap, xuat ma tran bang toan tu";
cout<<"\n2: Nhap, xuat ma tran bang ham";
cout<<"\n3: Toan tu cong 2 ma tran";
}
//-----------khai báo class------------------------
class matrix
{
private:
int **a;
int ****ng, socot;
public:
matrix(); //constructor mặc định
matrix(matrix &); //constructor sao chép
~matrix(); //destructor
friend istream& operator>> (istream &, matrix &); //nhập bằng toán tử
friend ostream& operator<< (ostream &, matrix &); //xuất bằng toán tử
void xoabonho(); //hàm xóa bộ nhớ
void nhap(); //hàm nhập
void xuat(); //hàm xuất
friend matrix operator +(matrix &, matrix &); //toán tử cộng
};
//----constructor mặc định--------
matrix::matrix()
{
****ng=0;
socot=0;
a= NULL;
}
//---------constructor sao chép----------
matrix::matrix(matrix &m)
{
****ng=m.****ng;
socot= m.socot;
a= new int*[****ng];
if(a==NULL)
cout<<"\nKhong du bo nho ";
for(int i=0; i< ****ng; ++i)
a[i]= new int[socot];
for(int i=0; i<****ng; ++i)
for(int j=0; j<socot; ++j)
a[i][j]=m.a[i][j];
}
//------destructor-------------
matrix::~matrix()
{
xoabonho();
}
//-------hàm xóa bộ nhớ---------
void matrix:: xoabonho()
{
if(a)
{
for(int i=0; i<****ng; ++i)
if(a[i])
delete []a[i];
delete []a;
}
}
//--------toán tử nhập-------------
istream& operator >>(istream & input, matrix &m)
{
m.xoabonho();
do
{
cout<<"\nNhap so dong: ";
cin>>m.****ng;
}while(m.****ng<1);
m.a= new int*[m.****ng];
if(m.a==NULL)
{
cout<<"\nKhong du bo nho";
}
do
{
cout<<"\nNhap so cot: ";
cin>>m.socot;
}while(m.socot<1);
for(int i=0; i< m.****ng; ++i)
{
m.a[i]= new int[m.socot];
}
for(int i=0; i<m.****ng; ++i)
{
for(int j=0; j< m.socot; ++j)
{
cout<<"\nNhap a["<<i+1<<"]["<<j+1<<"]= ";
cin>>m.a[i][j];
}
}
return input;
}
//--------toán tử xuất-------------------------
ostream& operator <<(ostream &output, matrix &m)
{
for(int i=0; i<m.****ng; i++)
{
for(int j=0; j< m.socot; j++)
{
cout<<setw(5)<<m.a[i][j];
}
cout<<"\n";
}
return output;
}
//-------hàm nhập---------------
void matrix::nhap()
{
xoabonho();
do
{
cout<<"\nNhap so dong: ";
cin>>****ng;
}while(****ng<1);
a= new int*[****ng];
if(a==NULL)
{
cout<<"\nKhong du bo nho";
}
do
{
cout<<"\nNhap so cot: ";
cin>>socot;
}while(socot<1);
for(int i=0; i< ****ng; ++i)
{
a[i]= new int[socot];
}
for(int i=0; i<****ng; ++i)
{
for(int j=0; j< socot; ++j)
{
cout<<"\nNhap a["<<i+1<<"]["<<j+1<<"]= ";
cin>>a[i][j];
}
}
}
//---------hàm xuất-------------
void matrix::xuat()
{
for(int i=0; i<****ng; i++)
{
for(int j=0; j< socot; j++)
{
cout<<setw(5)<<a[i][j];
}
cout<<"\n";
}
}
//-----------toán tử cộng----------
matrix operator+(matrix & m1, matrix &m2)
{
matrix kq;
for(int i=0; i<m1.****ng; ++i)
for(int j=0; j< m1.socot; ++j)
kq.a[i][j]=m1.a[i][j] + m2.a[i][j];
cout<<kq;
return kq;
}
int main()
{
matrix m, m1, m2, m3;
int chon;
menu();
while(1)
{
do
{
cout<<"\nMoi ban chon chuc nang: ";
cin>>chon;
}while(chon<0 || chon >3);
if(chon==0)
break;
switch(chon)
{
case 1:
{
cout<<"\nNhap ma tran: ";
cin>>m;
cout<<"\nMa tran sau khi nhap: "<<"\n";
cout<<m;
}
break;
case 2:
{
cout<<"\nNhap ma tran: ";
m.nhap();
cout<<"\nMa tran sau khi nhap: "<<"\n";
m.xuat();
}
break;
case 3:
{
cout<<"\nNhap ma tran 1: ";
cin>>m1;
cout<<"\nNhap ma tran 2: ";
cin>>m2;
m3=m1+m2;
cout<<"\nMa tran tong: "<<"\n";
cout<<m3;
}
break;
}
}
return 1;
}
Tks nhiều.....
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
//--------Menu------------------
void menu()
{
cout<<"\n0: Thoat";
cout<<"\n1: Nhap, xuat ma tran bang toan tu";
cout<<"\n2: Nhap, xuat ma tran bang ham";
cout<<"\n3: Toan tu cong 2 ma tran";
}
//-----------khai báo class------------------------
class matrix
{
private:
int **a;
int ****ng, socot;
public:
matrix(); //constructor mặc định
matrix(matrix &); //constructor sao chép
~matrix(); //destructor
friend istream& operator>> (istream &, matrix &); //nhập bằng toán tử
friend ostream& operator<< (ostream &, matrix &); //xuất bằng toán tử
void xoabonho(); //hàm xóa bộ nhớ
void nhap(); //hàm nhập
void xuat(); //hàm xuất
friend matrix operator +(matrix &, matrix &); //toán tử cộng
};
//----constructor mặc định--------
matrix::matrix()
{
****ng=0;
socot=0;
a= NULL;
}
//---------constructor sao chép----------
matrix::matrix(matrix &m)
{
****ng=m.****ng;
socot= m.socot;
a= new int*[****ng];
if(a==NULL)
cout<<"\nKhong du bo nho ";
for(int i=0; i< ****ng; ++i)
a[i]= new int[socot];
for(int i=0; i<****ng; ++i)
for(int j=0; j<socot; ++j)
a[i][j]=m.a[i][j];
}
//------destructor-------------
matrix::~matrix()
{
xoabonho();
}
//-------hàm xóa bộ nhớ---------
void matrix:: xoabonho()
{
if(a)
{
for(int i=0; i<****ng; ++i)
if(a[i])
delete []a[i];
delete []a;
}
}
//--------toán tử nhập-------------
istream& operator >>(istream & input, matrix &m)
{
m.xoabonho();
do
{
cout<<"\nNhap so dong: ";
cin>>m.****ng;
}while(m.****ng<1);
m.a= new int*[m.****ng];
if(m.a==NULL)
{
cout<<"\nKhong du bo nho";
}
do
{
cout<<"\nNhap so cot: ";
cin>>m.socot;
}while(m.socot<1);
for(int i=0; i< m.****ng; ++i)
{
m.a[i]= new int[m.socot];
}
for(int i=0; i<m.****ng; ++i)
{
for(int j=0; j< m.socot; ++j)
{
cout<<"\nNhap a["<<i+1<<"]["<<j+1<<"]= ";
cin>>m.a[i][j];
}
}
return input;
}
//--------toán tử xuất-------------------------
ostream& operator <<(ostream &output, matrix &m)
{
for(int i=0; i<m.****ng; i++)
{
for(int j=0; j< m.socot; j++)
{
cout<<setw(5)<<m.a[i][j];
}
cout<<"\n";
}
return output;
}
//-------hàm nhập---------------
void matrix::nhap()
{
xoabonho();
do
{
cout<<"\nNhap so dong: ";
cin>>****ng;
}while(****ng<1);
a= new int*[****ng];
if(a==NULL)
{
cout<<"\nKhong du bo nho";
}
do
{
cout<<"\nNhap so cot: ";
cin>>socot;
}while(socot<1);
for(int i=0; i< ****ng; ++i)
{
a[i]= new int[socot];
}
for(int i=0; i<****ng; ++i)
{
for(int j=0; j< socot; ++j)
{
cout<<"\nNhap a["<<i+1<<"]["<<j+1<<"]= ";
cin>>a[i][j];
}
}
}
//---------hàm xuất-------------
void matrix::xuat()
{
for(int i=0; i<****ng; i++)
{
for(int j=0; j< socot; j++)
{
cout<<setw(5)<<a[i][j];
}
cout<<"\n";
}
}
//-----------toán tử cộng----------
matrix operator+(matrix & m1, matrix &m2)
{
matrix kq;
for(int i=0; i<m1.****ng; ++i)
for(int j=0; j< m1.socot; ++j)
kq.a[i][j]=m1.a[i][j] + m2.a[i][j];
cout<<kq;
return kq;
}
int main()
{
matrix m, m1, m2, m3;
int chon;
menu();
while(1)
{
do
{
cout<<"\nMoi ban chon chuc nang: ";
cin>>chon;
}while(chon<0 || chon >3);
if(chon==0)
break;
switch(chon)
{
case 1:
{
cout<<"\nNhap ma tran: ";
cin>>m;
cout<<"\nMa tran sau khi nhap: "<<"\n";
cout<<m;
}
break;
case 2:
{
cout<<"\nNhap ma tran: ";
m.nhap();
cout<<"\nMa tran sau khi nhap: "<<"\n";
m.xuat();
}
break;
case 3:
{
cout<<"\nNhap ma tran 1: ";
cin>>m1;
cout<<"\nNhap ma tran 2: ";
cin>>m2;
m3=m1+m2;
cout<<"\nMa tran tong: "<<"\n";
cout<<m3;
}
break;
}
}
return 1;
}
Tks nhiều.....
Comment