/*
文件中有一组整数,要求排序后输出到另一个文件中
//冒泡排序,流操作文件
*/
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <vector>
using namespace std;
//bubble sort
void Order(vector<int>& data)
{
int count = data.size();
int flag = false;//bubble 是否继续
for(int i=0; i<count; i++)
{
for(int j=0; j<(count-1); j++)//两两比较,少一次循环
{
if(data[j] > data[j+1])//前者大,需要bubble
{
flag = true;
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
if(!flag)
break;
}
return;
}
int main()
{
//用与判断编译器是C编译器还是C++编译器
#ifdef __cplusplus
cout<<"c++"<<endl;
#else
cout<<"c"<<endl;
#endif
//打印当前行号和源文件名..使用系统预定义宏
cout<<__LINE__<<endl;
cout<<__FILE__<<endl;
vector<int>data;
//打开文件读出这组整数
ofstream inn("./data.txt");
if(!inn)
{
cout<<"file error!!!"<<endl;
exit(1);
}
inn<<3<<' '<<4<<' '<<5<<' '<<1<<' '<<7;
inn.close();
ifstream in("./data.txt");
if(!in)
{
cout<<"file error!!!"<<endl;
exit(1);
}
int temp;
while(!in.eof())
{
in>>temp;//为什么这里把最后一个元素写来两遍,应该写一遍才对,先用流写进文件,再从文件中用流读出来,OK
data.push_back(temp);
}
cout<<"排序前:"<<endl;
for(int i=0; i<data.size(); i++)
{
cout<<data[i]<<endl;
}
in.close();
//排序
Order(data);
//存入文件
ofstream out("./result.txt");
if(!out)
{
cout<<"file error!!!!"<<endl;
exit(1);
}
for(int i=0; i<data.size(); i++)
out<<data[i]<<" ";
cout<<"排序后:"<<endl;
for(int i=0; i<data.size(); i++)
{
cout<<data[i]<<endl;
}
out.close();
return 0;
}
一个文件中有一组整数,要求排序后存放到另一个文件中
最新推荐文章于 2021-07-26 22:55:27 发布