(1)有2个矩阵A和B(均为2行3列)。求2矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:C=A+B。
用c++编程(1)有2个矩阵A和B(均为2行3列)。求2矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:C=A+B。用VC++6.0编译调式运行...
用c++编程
(1)有2个矩阵A和B(均为2行3列)。求2矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:C=A+B。
用VC++6.0编译调式运行 展开
(1)有2个矩阵A和B(均为2行3列)。求2矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:C=A+B。
用VC++6.0编译调式运行 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
//main.cpp _______used for testing
#include <cstdlib>
#include <iostream>
#include "matrix.h"
#include "time.h"
#include "stdlib.h"
using namespace std;
int main(int argc, char *argv[])
{
srand(time(NULL));
double data[ROW][COLUMN];
Matrix *pm1,*pm2;
int k=0;
while(k<2)
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
data[i][j] = rand()%50;
if(k++)
pm1 = new Matrix(data,2);
else
pm2 = new Matrix(data,2);
}
cout << "Two Matrix Addition:\n";
cout << "\nm1:\n"; pm1->Display();
cout << "\nm2:\n"; pm2->Display();
cout << "\nThe Resulte is :\n";
Matrix temp = *pm1 + *pm2;
temp.Display();
system("PAUSE");
return EXIT_SUCCESS;
}
//matrix.h___________________used for the class Matrix
#ifndef _matrix_h
#define _matrix_h
#define ROW 2
#define COLUMN 3
class Matrix
{
private:
double el[ROW][COLUMN];
public:
Matrix()
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
el[i][j]=0;
}
Matrix(double [][COLUMN],int);
~Matrix(){}
void Display();
friend const Matrix operator + (const Matrix &,const Matrix &);
};
const Matrix operator + (const Matrix&,const Matrix &);
#endif //_matrix_h
//matrix.cpp_____________the implementation of the class functions
#include "matrix.h"
#include <iostream>
using namespace std;
Matrix::Matrix(double pa[][COLUMN],int row)
{
if(row >= 2)
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
el[i][j] = pa[i][j];
}
}
void Matrix::Display()
{
cout << "The Matrix is :\n";
for(int i=0;i<ROW;i++)
{
for(int j=0;j<COLUMN;j++)
cout << el[i][j] <<'\t';
cout << endl;
}
cout << "End!\n";
}
const Matrix operator + (const Matrix & m1,const Matrix & m2)
{
Matrix temp;
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
temp.el[i][j] = m1.el[i][j] + m2.el[i][j];
return temp;
}
vs.net下编译通过,虽然这个程序不是很复杂,但是因为VC++6.0对C++标准支持得不是很好,所以一些类似变量声明定义的细节地方出了问题,可以自己调整一下。建议换掉VC++6.0,是应该把它留给历史了。
如果还有不明白的地方,可以发邮件给我。icesnow_no@163.com
#include <cstdlib>
#include <iostream>
#include "matrix.h"
#include "time.h"
#include "stdlib.h"
using namespace std;
int main(int argc, char *argv[])
{
srand(time(NULL));
double data[ROW][COLUMN];
Matrix *pm1,*pm2;
int k=0;
while(k<2)
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
data[i][j] = rand()%50;
if(k++)
pm1 = new Matrix(data,2);
else
pm2 = new Matrix(data,2);
}
cout << "Two Matrix Addition:\n";
cout << "\nm1:\n"; pm1->Display();
cout << "\nm2:\n"; pm2->Display();
cout << "\nThe Resulte is :\n";
Matrix temp = *pm1 + *pm2;
temp.Display();
system("PAUSE");
return EXIT_SUCCESS;
}
//matrix.h___________________used for the class Matrix
#ifndef _matrix_h
#define _matrix_h
#define ROW 2
#define COLUMN 3
class Matrix
{
private:
double el[ROW][COLUMN];
public:
Matrix()
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
el[i][j]=0;
}
Matrix(double [][COLUMN],int);
~Matrix(){}
void Display();
friend const Matrix operator + (const Matrix &,const Matrix &);
};
const Matrix operator + (const Matrix&,const Matrix &);
#endif //_matrix_h
//matrix.cpp_____________the implementation of the class functions
#include "matrix.h"
#include <iostream>
using namespace std;
Matrix::Matrix(double pa[][COLUMN],int row)
{
if(row >= 2)
{
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
el[i][j] = pa[i][j];
}
}
void Matrix::Display()
{
cout << "The Matrix is :\n";
for(int i=0;i<ROW;i++)
{
for(int j=0;j<COLUMN;j++)
cout << el[i][j] <<'\t';
cout << endl;
}
cout << "End!\n";
}
const Matrix operator + (const Matrix & m1,const Matrix & m2)
{
Matrix temp;
for(int i=0;i<ROW;i++)
for(int j=0;j<COLUMN;j++)
temp.el[i][j] = m1.el[i][j] + m2.el[i][j];
return temp;
}
vs.net下编译通过,虽然这个程序不是很复杂,但是因为VC++6.0对C++标准支持得不是很好,所以一些类似变量声明定义的细节地方出了问题,可以自己调整一下。建议换掉VC++6.0,是应该把它留给历史了。
如果还有不明白的地方,可以发邮件给我。icesnow_no@163.com
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询