#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
//____qcodep____
class Matrix
{
public:
Matrix(int x,int y){
r=x;
c=y;
};
friend istream& operator >> (istream&,Matrix&);
friend ostream& operator << (ostream&,Matrix&);
Matrix operator + (Matrix & m2);
Matrix operator - (Matrix & m2);
Matrix operator * (Matrix & m2);
private:
int r,c;
int M[1000][1000];
};
istream& operator >> (istream& in,Matrix& m){
int i,j;
for(i=1;i<=m.r;i++){
for(j=1;j<=m.c;j++){
in>>m.M[i][j];
}
}
return in;
}
ostream& operator << (ostream& out,Matrix& m){
if(m.r==-1){
out<<setw(6)<<"invalid operation!"<<endl;
return out;
}
else{
int i,j;
for(i=1;i<=m.r;i++){
for(j=1;j<=m.c;j++){
out<<setw(6)<<m.M[i][j];
if(j==m.c)
out<<endl;
}
}
return out;
}
}
Matrix Matrix::operator +(Matrix &m2){
if(r==m2.r && c==m2.c){
int i,j;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
M[i][j]+=m2.M[i][j];
}
}
return *this;
}
else{
return Matrix(-1,-1);
}
}
Matrix Matrix::operator -(Matrix &m2){
if(r==m2.r && c==m2.c){
int i,j;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
M[i][j]-=m2.M[i][j];
}
}
return *this;
}
else{
return Matrix(-1,-2);
}
}
Matrix Matrix::operator *(Matrix &m2){
if(c==m2.r){
int i,j,k;
Matrix temp(r,m2.c);
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
temp.M[i][j]=0;
for(k=1;k<=c;k++){
temp.M[i][j]+=(M[i][k]+m2.M[k][j]);
}
}
}
return temp;
}
else
return Matrix(-1,-3);
}
int main() {
int r,c;
cin>>r>>c;
if(r<1 || c<1){
cout<<"Input error."<<endl;
exit(1);
}
Matrix A(r,c);
cin >> A;
cin>>r>>c;
if(r<1 || c<1){
cout<<"Input error."<<endl;
exit(1);
}
Matrix B(r,c);
cin >> B;
cout<<"A + B:"<<endl;
cout << A + B <<endl;
cout<<"A - B:"<<endl;
cout << A - B <<endl;
cout<<"A * B:"<<endl;
cout << A * B <<endl;
return 0;
}
uj5u.com熱心網友回復:
const T&uj5u.com熱心網友回復:
請問T是什么……uj5u.com熱心網友回復:
T 指的就是你的類轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56521.html
標籤:C++ 語言
上一篇:解下
下一篇:用C++算成績
