请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的Matrix是一个用于表示矩阵的类。operator+的功能是实现两个矩阵的加法运算。例如,若有两个3行3列的矩阵 则A与B相加的和为 请编写openaor+函数。 要

admin2019-06-07  65

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的Matrix是一个用于表示矩阵的类。operator+的功能是实现两个矩阵的加法运算。例如,若有两个3行3列的矩阵

则A与B相加的和为

请编写openaor+函数。
要求:
补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//Matvix.h
#include
#include
usingnamespacestd;
constintM=18;
constintN=18;
classMatrix{
intarray[M][N];
public:
Matrix(){}
intgetElement(inti,intj)const{
returnarray[j];)
voidsetElement(inti,intj,int
value){array[j]=value;)
voidshow(constchar*s)const
{
cout<for(inti=0;icout<for(intj=0;jcout<[j];
}
}
};
voidreadFromFile(constchar*,
Matrix&);
voidwriteToFile(char*,const
Matrix&);
//main.cpp
#include
#include"Matrix.h"
voidreadFromFile(constchar*
filename,Matrix&m)
{
ifstreaminfile(filename);
if(!infile){
cerr<<"无法读取输人数据文件!\n";
return;
}
intd;
for(inti=0;ifor(intj=0;jinfile>>d;
m.setElement(i,j,d);
}
}
Matrixoperator+(constMatrix&ml,
constMatrix&m2)
{
//********333********
//********666********
}
intmain()
{
Matrixm1,m2,sum;
readFromFile("",m1);
readFromFile("",m2);
sum=ml+m2;
m1.show("Matrixm1:");
m2.show("Matrixm2:");
sum.show("Matrixsum=m1+m2:");
writeToFile("",sum);
return0;
}

选项

答案Matrix m; for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) m.setElement(i, j, (m1.getElement(i,j) + m2.getElement(i,j))); return m;

解析 主要考查考生对运算符重载的掌握,本题使用二维数组表示矩阵,使用for循环遍历数组的每个元素,将位置一样的两个数组元素相加,放入新的二维数组中。
转载请注明原文地址:https://kaotiyun.com/show/Yh8p777K
0

最新回复(0)