c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 04:36:34
c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘
实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请可以使用new).
实现一个的矩阵类,矩阵类的成员数据是一个n×n的整数数组,重载符号*以实现矩阵相乘(提示:注意矩阵运算操作要满足所需条件,数组申请可以使用new).
// 以下实现供参考
#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;
}
#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;
}
c ++ 实现一个的n*n矩阵类,重载符号*以实现矩阵相乘
重载矩阵加法运算.设A,B,C均为m行,n列的矩阵,程序能实现C=A+B的操作.
编写一个程序实现一个矩阵类,通过重载+,-,*运算符来实现矩阵的加,减,乘操作.
编程实现两个N*N矩阵相乘,并输出实验结构矩阵元素为整型数据.用c语言编程
定义一个矩阵类,重载运算符+与*,以完成两矩阵相加与相乘运算
实验项目:实现矩阵的加与乘操作.实验要求:定义两个n乘n矩阵,编程计算两个矩阵现价与相乘的结果.
c++编一个矩阵类,实现相加,相乘.
如何用MATLAB实现矩阵的相乘
编程实现:输入一个 n*n 的矩阵,求出两条对角线元素值之和.
C语言:输入一个2*3的整数矩阵和一个3*2的整数矩阵,使用指针数组实现这两个矩阵的相乘.程序如下:
1、定义一个N*N的矩阵,输出其对角线元素、上三角矩阵和下三角矩阵; 2、 编程实现N阶方阵的乘法运算.
定义一个N*N的矩阵,输出其对角线元素、上三角矩阵和下三角矩阵; 2、 编程实现N阶方阵的乘法运算.