BT Về Lập trình hướng đối tượng (Mở đầu)
4. Xây dựng lớp ma trận gồm các thành phần:
-DL: số dòng, số cột, mảng các phần tử
-Pt: nhập, in, kiểm tra ma trận có là đơn vị không
Hàm main:
-Nhập ma trận a
-Thông báo có là ma trận đơn vị không
-In ma trận
Code:
#include <conio.h>
#include <iostream.h>
class MT
{
private:
// so hang m, so cot n, mang a chua cac phan tu cua ma tran
int m;
int n;
float a[10][10];
public:
// khai bao ham kiem tra ma tran don vi la ham ban cua lop MT
friend int ktra(MT x);
//============================
// ma tran khoi tao
MT()
{
m=1;
n=1;
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
a[i][j]=0;
}
//============================
// toan tu xuat ma tran
friend ostream& operator<<(ostream& os,const MT &x)
{
for (int i=1;i<=x.m;i++)
{
for (int j=1;j<=x.n;j++)
os<<x.a[i][j]<<" ";
os<<"\n";
}
return os;
}
// ===========================
// toan tu nhap ma tran
friend istream& operator>>(istream& is,MT &x)
{
cout<<"Nhap so hang :";is>>x.m;
cout<<"Nhap so cot :";is>>x.n;
for (int i=1;i<=x.m;i++)
for (int j=1;j<=x.n;j++)
{
cout<<"Nhap phan tu hang "<<i<<", cot "<<j<<" : ";
is>>x.a[i][j];
}
return is;
}
//============================
// toan tu cong 2 ma tran
MT operator+(MT x2)
{
if (m!=x2.m||n!=x2.n)
{
cout<<"Khong thuc hien duoc phep cong ma tran \n";
return x2;
}
else
{
MT x3;
x3.m = x2.m;
x3.n = x2.n;
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
{
x3.a[i][j]=a[i][j]+x2.a[i][j];
}
return x3;
}
}
//===========================
// toan tu tru 2 ma tran
MT operator-(MT x2)
{
if (m!=x2.m||n!=x2.n)
{
cout<<"Khong thuc hien duoc phep tru ma tran \n";
return x2;
}
else
{
MT x3;
x3.m = x2.m;
x3.n = x2.n;
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
{
x3.a[i][j]=a[i][j]-x2.a[i][j];
}
return x3;
}
}
//=============================
// toan tu nhan 2 ma tran
MT operator*(MT x2)
{
if (this->n!=x2.m)
{
cout<<"Khong nhan duoc 2 ma tran \n";
return x2;
}
else
{
MT x3;
// khoi tao so hang va so cot cua ma tran tich
x3.m=m;
x3.n=x2.n;
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
{
x3.a[i][j]=0;
for (int k=1;k<=x2.m;k++)
x3.a[i][j]+=a[i][k]*x2.a[k][j];
}
return x3;
}
}
};
//============================
// kiem tra ma tran don vi
int ktra(MT x)
{
if (x.m!=x.n) return 0;
else
{
int t;
x.m = t;
x.n = t;
for (int i= 1;i<=t;i++)
if (x.a[i][i]!=1) return 0;
else
{
for (i=1;i<=t;i++)
for (int j=1;j<=t;j++)
{
if ((i!=j)&&(x.a[i][j]!=0)) return 0;
else
return 1;
}
}
}
}
//============================
// ham main
void main()
{
clrscr();
// chuong trinh xay dung lop ma tran
// vu dinh vinh
MT d,b,c,e,f;
cin>>c>>b;
d=c+b;
e=c-b;
f=c*b;
cout<<"Tong 2 ma tran :\n"<<d;
cout<<"Hieu 2 ma tran :\n"<<e;
cout<<"Tich 2 ma tran :\n"<<f;
cout<<"=================================\n";
cout<<"Nhap ma tran de kiem tra :\n";
MT p;
cin>>p;
cout<<"Ma tran :\n";
cout<<p;
if (ktra(p)==1) cout<<"La ma tran don vi \n";
else
cout<<"Khong la ma tran don vi \n";
getch();
}
0 Response to "BT Về Lập trình hướng đối tượng (Mở đầu)"
Đăng nhận xét