MaTran
//nhan ma tran voi x
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
//khai bao lop doi tuong ma tran
class MaTran
{
private:
enum {size=10};
int a[size][size];
int m,n;
public:
MaTran();
MaTran operator*(float x);
float TBC();
//ham ban
friend ifstream& operator>>(ifstream &fin,MaTran &mt);
friend ostream& operator<<(ostream &cout,MaTran &mt);
};
int main()
{
//tao 3 doi tuong ma tran
MaTran A,B;
//khai bao bien
int x;
float tbc;
//tao doi tuong doc tep
ifstream fin("matran.txt");
fin>>A;
//Dua ra ma tran A ra man hinh
cout<<"Chuong trinh nhan ma tran voi 1 so thuc x.\n\n";
cout<<"\nNhap vao x: "; cin>>x;
//nhan ma tran A voi x va tinh TBC cua mt A
B = A * x;
tbc = A.TBC();
//dua ra man hinh
cout<<"Ma tran A la: \n"; cout <<A;
printf("\nTBC cua ma tran A la: %0.2f", tbc);
cout<<"\nMa tran nhan la: \n"; cout<<B;
cout<<endl;
return 0;
}
//dinh nghia ham
MaTran::MaTran():m(0),n(0)
{
}
MaTran MaTran::operator*(float x)
{
MaTran tich;
tich.m = m;
tich.n = n;
//nhan ma tran A voi x
for(int i = 0;i<m;i++)
for(int j=0;j<n;j++)
tich.a[i][j] = a[i][j] * x;
return tich;
}
float MaTran::TBC()
{
float tong = 0;
for(int i = 0;i<m;i++)
for(int j=0;j<n;j++)
tong += a[i][j];
return tong/(m*n);
}
//ham ban
ifstream& operator>>(ifstream &fin, MaTran &mt)
{
fin>>mt.m>>mt.n;
//doc ma tran tep
for(int i = 0;i<mt.m;i++)
for(int j =0;j<mt.n;j++)
fin>>mt.a[i][j];
return fin;
}
ostream& operator<<(ostream &cout,MaTran &mt)
{
for(int i = 0;i<mt.m;i++)
{
for(int j =0;j<mt.n;j++)
printf("%6d",mt.a[i][j]);
//xuong dong
cout<<endl;
}
return cout;
}/*
Bài 21(lthdtbai21.cpp): Tính tổng 2 ma trận nguyên: Cmxn = Amxn + Bmxn. Ma trận Amxn để trong
tệp văn bản "matran-A.txt", ma trận Bmxn để trong tệp văn bản "matran-B.txt".
Đưa các ma trận ra màn hình theo định dạng hàng, cột.
Yêu cầu thêm:
1) Sử dụng toán tử nhập >> để đọc vào ma trận từ tệp;
2) Sử dụng toán tử xuất << để đưa ma trận ra màn hình theo định dạng hàng, cột;
3) Sử dụng toán tử cộng + để cộng 2 ma trận và trả về ma trận tổng;
4) Tự động khởi tạo kích thước ma trận bằng 0.
*/
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
//Khai bao lop doi tuong ma tran nguyen
class MaTran
{
private:
enum {size=10};
int a[size][size];
int m,n;
public:
MaTran();
MaTran operator+(MaTran &mt2);
//Ham ban
friend ifstream& operator>>(ifstream &fin,MaTran &mt);
friend ostream& operator<<(ostream &cout,MaTran &mt);
};
//===chuong trinh chinh===
int main()
{
//Tao 3 doi tuong ma tran
MaTran A,B,C;
//Tao doi tuong tep doc vao
ifstream finA("matran-A.txt");
ifstream finB("matran-B.txt");
//Doc ma tran A va B vao doi tuong A, B tuong ung
finA>>A;
finB>>B;
//Dua ma tran A,B ra man hinh
cout<<"Chuong trinh cong hai ma tran so nguyen doc vao tu tep: Cmxn = Amxn + Bmxn";
cout<<"\n\nMa tran A:\n"<<A;
cout<<"\nMa tran B:\n"<<B;
//Cong ma tran
C = A + B;
//Dua ra ma tran tong
cout<<"\nMa tran C = A + B:\n"<<C;
cout<<endl;
return 0;
}
//===dinh nghia ham===
MaTran::MaTran():m(0),n(0)
{
}
MaTran MaTran::operator+(MaTran &mt2)
{
//Tao doi tuong de chua ma tran tong
MaTran tong;
//Kiem tra dieu kien, neu thoa man thi cong ma tran
if(m==mt2.m && n==mt2.n)
{
tong.m = m;
tong.n = n;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
tong.a[i][j] = a[i][j] + mt2.a[i][j];
}
else cout<<"\nHai ma tran khong cung kich thuoc, khong cong duoc.\n";
//Tra ve ma tran tong
return tong;
}
//Ham ban, ham thong thuong
ifstream& operator>>(ifstream &fin,MaTran &mt)
{
//Doc kich thuoc ma tran tu tep
fin>>mt.m>>mt.n;
//Doc cac phan tu cua ma tran tu tep
for(int i=0;i<mt.m;i++)
for(int j=0;j<mt.n;j++)
fin>>mt.a[i][j];
return fin;
}
ostream& operator<<(ostream &cout,MaTran &mt)
{
for(int i=0;i<mt.m;i++)
{
//Dua ra hang i
for(int j=0;j<mt.n;j++)
printf("%6d",mt.a[i][j]);
//Xuong dong
cout<<endl;
}
return cout;
}Last updated