帮我看看这个C++程序(矩阵乘法,对*进行重载)哪些地方有问题,运行通过给分
#include<iostream>#include<iomanip>usingnamespacestd;classmatrix{private:doublea[10][...
#include <iostream>
#include <iomanip>
using namespace std;
class matrix{
private:
double a[10][10];
public:
matrix(){for(int i=0;i<10;i++){
for(int j=0;j<10;j++)a[i][j]=0;
}
for(int k=0;k<=9;k++)a[k][k]=1;
}
matrix(double d[10][10]);
void input();
void print();
matrix operator*(matrix);
};
void matrix::input(){for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
cin>>a[i][j];
}}}
void matrix::print(){for(int i=0;i<10;i++){
for(int j=0;j<10;j++)cout<<a[i][j]<<setw(2);
cout<<'\n';
}}
matrix::matrix(double d[10][10]){for(int i=0;i<10;i++){
for(int j=0;j<10;j++)a[i][j]=d[i][j];
}
matrix matrix::operator*(matrix c){double d[10][10];
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
for(int k=0;k<=9;k++)d[i][j]+=a[i][k]*c.a[k][j];
}}
matrix temp(d);
return temp;
}
matrix A,B;
void main(){
A.input();
B.input();
matrix D(A*B.a);
D.print();
} 展开
#include <iomanip>
using namespace std;
class matrix{
private:
double a[10][10];
public:
matrix(){for(int i=0;i<10;i++){
for(int j=0;j<10;j++)a[i][j]=0;
}
for(int k=0;k<=9;k++)a[k][k]=1;
}
matrix(double d[10][10]);
void input();
void print();
matrix operator*(matrix);
};
void matrix::input(){for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
cin>>a[i][j];
}}}
void matrix::print(){for(int i=0;i<10;i++){
for(int j=0;j<10;j++)cout<<a[i][j]<<setw(2);
cout<<'\n';
}}
matrix::matrix(double d[10][10]){for(int i=0;i<10;i++){
for(int j=0;j<10;j++)a[i][j]=d[i][j];
}
matrix matrix::operator*(matrix c){double d[10][10];
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
for(int k=0;k<=9;k++)d[i][j]+=a[i][k]*c.a[k][j];
}}
matrix temp(d);
return temp;
}
matrix A,B;
void main(){
A.input();
B.input();
matrix D(A*B.a);
D.print();
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询