对两个有序数组进行合并:设有数组A、B,数组元素的值是数字,如下所示,并假设两个数组的元素都已经有序(从大到小降序排列),且分别保存在各自的文件中。编程序,合并A、B数组形成一个新的数组C,并使C的元素仍有序(从大到小降序排列),并将排序结果保存到新文件中。
示例 : 假设有int A[10]={123,88,86,86,33,15,7,0,-1,-3};int B[10]={86,69,51,50,27,19,15,12,5,2};
关于#c++#的问题,请各位专家解答!!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 小唐只认钱 2021-12-14 20:49关注
我也是才学,这是代码
#include <iostream> #include <fstream> using namespace std; int main() { int a[10],b[10],c[20],i,j,t; ifstream fa("a.txt"); ifstream fb("b.txt"); ofstream fc("c.txt"); if(!fa.is_open()) { cout << "文件a打开失败"; return 0; } if(!fa.is_open()) { cout << "文件b打开失败"; return 0; } //读取文件A i = 0; while(!fa.eof()) { fa >> a[i]; i++; if(i>=10) break; } fa.close(); //读取文件b i=0; while(!fb.eof()) { fb >> b[i]; i++; if(i>=10) break; } fb.close(); //显示数组a和数组b for(i=0;i<10;i++) cout << a[i]<<" "; cout << endl; for(i=0;i<10;i++) cout << b[i]<<" "; cout << endl; //合并数组 t =0; for (i=0,j=0;i<10 || j<10;) { if(i<10 && j<10) { if(a[i]>b[j]) c[t++]= a[i++]; else c[t++]=b[j++]; }else if (i==10 && j<10) { c[t++] = b[j++]; }else if(i<10 && j==10) c[t++] = a[i++]; } //输出c for(i=0;i<20;i++) { cout << c[i]<<" "; if(i<19) fc << c[i] << " "; else fc << c[i]; } cout <<endl; fc.close(); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
- ¥15 找一个QT页面+目标识别(行人检测)的开源项目
- ¥15 有没有整苹果智能分拣线上图像数据
- ¥20 有没有人会这个东西的
- ¥15 cfx考虑调整“enforce system memory limit”参数的设置
- ¥30 航迹分离,航迹增强,误差分析
- ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
- ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
- ¥15 LLM accuracy检测
- ¥15 pycharm添加远程解释器报错