[求助] 请帮忙编一下这个程序~!谢谢!
将两个按从小到大排列的有序数组a和b复制合并到第3个有序数组c中。m和n分别是数组a和b的元素个数,结果c的元素个数为k。例如,a和b数组分别为{1, 2, 2, 3, 8}和{3, 4, 7, 8},则结果数组c的值是{1, 2, 2, 3, 3, 4, 7, 8, 8}。算法是:将a、b两个数组看成两个队列,比较队首的两个元素,将较小者放入c队列尾部,如果队首的两个元素相等,则先选择a队列首部元素加入c队列尾部。循环执行以上过程,直到a或b队列之一为空,然后将另一个非空队列拷贝到c队列尾部。注意:不允许使用其他算法(如排序算法)。试建立一个类Com,完成合成工作。具体要求如下:
(1)私有数据成员。
●int m, n, k:分别是a, b, c三个数组的元素个数。
●int *a, *b, *c:分别指向动态申请的3组存储数据空间,其空间大小分别依据m、n和k的值而定。
(2)公有成员函数。
●Com(int aa[ ], int m1, int bb[ ], int n1 ):构造函数,用参数初始化a、b数组及其元素个数。将k初始化为0。
●void combine( ):完成合并工作。
●void show(fstream &):将a、b、c三个数组输出,每行输出一个数组。
●~Com():析构函数,释放动态申请的存储空间。
(3)在主程序中完成对该类进行测试。定义两个数组int x[100], y[100],其输入的初始值如上。定义一个Com类的对象c,用x、y数组及其元素的个数初始化该对象,然后调用成员函数进行合并及输出工作。程序正确的运行结果如下:
a:1, 2, 2, 3, 8
b:3, 4, 7, 8
c:1, 2, 2, 3, 3, 4, 7, 8, 8
还可以自行选择输入文件数据,完成测试工作。
[要求]
将源程序取名为cd11.cpp,程序中使用的数据皆放在文件名为data.txt中,并使用C++读取文件的方式输入程序中需要的数据,最后程序运行的结果同时以2种方式输出:①屏幕显示方式和②文件的形式存放在文件名为result.txt中,以上3个文件皆放在学号姓名文件夹下,供阅读、运行使用。
我怎么都编不出来 请高手们帮帮忙