c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 07:32:51
![c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请](/uploads/image/z/8642005-61-5.jpg?t=c+%2B%2B+%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%9A%84n%2An%E7%9F%A9%E9%98%B5%E7%B1%BB%2C%E9%87%8D%E8%BD%BD%E7%AC%A6%E5%8F%B7%2A%E4%BB%A5%E5%AE%9E%E7%8E%B0%E7%9F%A9%E9%98%B5%E7%9B%B8%E4%B9%98%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%9A%84%E7%9F%A9%E9%98%B5%E7%B1%BB%2C%E7%9F%A9%E9%98%B5%E7%B1%BB%E7%9A%84%E6%88%90%E5%91%98%E6%95%B0%E6%8D%AE%E6%98%AF%E4%B8%80%E4%B8%AAn%C3%97n%E7%9A%84%E6%95%B4%E6%95%B0%E6%95%B0%E7%BB%84%2C%E9%87%8D%E8%BD%BD%E7%AC%A6%E5%8F%B7%2A%E4%BB%A5%E5%AE%9E%E7%8E%B0%E7%9F%A9%E9%98%B5%E7%9B%B8%E4%B9%98%EF%BC%88%E6%8F%90%E7%A4%BA%EF%BC%9A%E6%B3%A8%E6%84%8F%E7%9F%A9%E9%98%B5%E8%BF%90%E7%AE%97%E6%93%8D%E4%BD%9C%E8%A6%81%E6%BB%A1%E8%B6%B3%E6%89%80%E9%9C%80%E6%9D%A1%E4%BB%B6%2C%E6%95%B0%E7%BB%84%E7%94%B3%E8%AF%B7)
c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请
c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘
实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请可以使用new).
c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请
// 以下实现供参考
#include<stdlib.h>
#include<stdio.h>
class Matrix{
private:
int sz;
int **data;
public:
Matrix(){sz=-1;}
Matrix(int s){
sz=s;
data=new int*[sz];
for(int i=0;i<sz;i++){
data[i]=new int[sz];
}
}
Matrix(int s,const int *val){
sz=s;
data=new int*[sz];
for(int i=0;i<sz;i++){
data[i]=new int[sz];
for(int j=0;j<sz;j++)
data[i][j]=val[i*sz+j];
}
}
~Matrix(){
for(int i=0;i<sz;i++){
delete[] data[i];
}
if(sz>0)
delete[] data;
}
int getSize()const {return sz;}
void setSize(int n){
if(sz>0){
for(int i=0;i<sz;i++)
delete[] data[i];
delete[] data;
}
data=new int*[n];
for(int i=0;i<n;i++)
data[i]=new int[n];
sz=n;
}
int get(int i,int j)const {return data[i][j];}
int set(int i,int j,int val){data[i][j]=val;}
Matrix operator*(const Matrix& mx){
int i,j,k;
Matrix prod(sz);
for(i=0;i<sz;i++){
for(j=0;j<sz;j++){
int sum=0;
for(k=0;k<sz;k++){
sum+=data[i][k]*mx.get(k,j);
}
prod.set(i,j,sum);
}
}
return prod;
}
Matrix& operator=(const Matrix& mx){
sz=mx.getSize();
for(int i=0;i<sz;i++)
for(int j=0;j<sz;j++)
set(i,j,mx.get(i,j));
}
void print()const{
for(int i=0;i<sz;i++){
for(int j=0;j<sz;j++){
printf("%4d ",data[i][j]);
}
printf("\n");
}
}
};
int main(){
const int a[]={1,2,3,4,5,6,7,8,9};
const int b[]={3,4,5,6,7,8,9,0,1};
Matrix m1(3,a),m2(3,b);
Matrix m(3);
m=m1*m2;
m.print();
system("pause");
return 0;
}