问答题
请使用VC6或使用【答题】菜单打开
proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:
两个数据表:
1,2,3,4,5,6
3,4,5,6,7,8
两个数据表之和:
4,6,8,10,12,14
要求:
补充编制的内容写在“// *******333*******”与“// *******666*******”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//DataList.h
#include <iostream>
using namespace std;
class DataList{ //数据表类
int len;
double * d;
public:
DataList(int len, double data[]=NULL);
DataList(DataList &data);
int length() const {return len;}
double getElement (int i) const {return d[i];}
DataList operator + (const DataList& list)const; //两个数据表求和
void show( const; //显示数据表
};
void writeToFile (char *, const DataList&);
//main.cpp
#include "DataList.h"
DataList::DataList (int len, double data[]):len(len) {
d=new double[len];
for(int i = 0; i < len; i ++)
d[i] = (data == NULL? 0.0:data[i]);
}
DataList::DataList (DataList &data):fen (data.len) {
d = new double[len];
for(int i = 0; i < len; i++)
d[i] = data.d[i];
}
DataList DataList::operator +
(const DataList& list) const { //两个数据表求和
double * dd = new double [list.length()];
// ********333********
// ********666********
return DataList (list.length(),dd);
}
void DataList::show() const { //显示数据表
for (int i = 0; i < len-1; i++)
cout << d[i] << ",";
cout << d[len-1] << endl;
}
int main() {
double s1[] = {1,2,3,4,5,6};
double s2[] = {3,4,5,6,7,8};
DataList list1(6, s1), list2(6, s2); //定义两个数据表对象
cout << "两个数据表:" << endl;
list1.show();
list2.show();
cout << endl << "两个数据表只和:" <<endl;
(list1 + list2).show();
writeToFile (" ", list1 + list2);
return 0;
}