1)从键盘输入20个整数,分别存放在两个磁盘文件中,每个文件中放10个整数
2)从f1.dat读入10个数,然后存放在f2.dat文件原有数据后面
3)从f2.dat中读入20个整数,对它们进行从小到大的顺序存放在f2.dat中(不保留原来的数据)
代码如下
#include<iostream>
#include<fstream>
using namespace std;
const int N=20;
void ClearAndStoreData(char const *a,int *s,int n=N,int b=0);
//a是文件的地址,S是需要输入的数组,e(end)是输入多少个数字之后结束,b是开始的输入的位置
void MergeFile(char const *a,char const *b);
//将第一个文件中的数字传入到第二个文件中
void PutFile(char const *a,int *array);
//将文件中的数据读入到整形数组中
void SortFile(char const *a);//对文件整形数据排序
void Sort(int *array,int n=N);//SortFile中用到的函数
int main()
{
int a[N];
cout<<"还请老哥输入20个数字:"<<endl;
for(int i=0;i<N;i++)
{
cin>>a[i];
}
ClearAndStoreData("f1.dat",a,N/2);//输入文件1
ClearAndStoreData("f2.dat",a,N,N/2);//剩余的输入到文件2
MergeFile("f1.dat","f2.dat");//将文件1存放到文件2后面
SortFile("f2.dat");//将文件2中的数组整理后排序
system("pause");
return 0;
}
void ClearAndStoreData(char const *a,int *s,int n,int b)
{
ofstream outfile(a,ios::out);
if(!outfile)
{
cerr<<"open error!"<<endl;
system("pause");
exit(1);
}
for(int i=b;i<n;i++)
{
outfile<<s[i]<<" ";
}
outfile.close();
}
void PutFile(char const *a,int *array)
{
ifstream ainfile(a,ios::in);
int n=N/2, i;
for(i=0;i<n;i++)
{
ainfile>>array[i];
}
ainfile.close();
}
void MergeFile(char const *a,char const *b)
{
ifstream ainfile(a,ios::in);
ofstream boutflile(b,ios::app);
int array[int(N/2)];
PutFile(a,array);
for(int i=0;i<N/2;i++)
{
boutflile<<array[i]<<" ";
}
ainfile.close();
boutflile.close();
}
void SortFile(char const *a)
{
fstream file(a,ios::in);
int array[N];
for(int i=0;i<N;i++)
{
file>>array[i];
}
Sort(array,N);
ClearAndStoreData(a,array,N);
file.close();
}
void Sort(int *array,int n)
{
int i=0,j=0,k=0,swap;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(array[k]>array[j])
{
k=j;
}
}
if(k!=i)
{
swap=array[k];
array[k]=array[i];
array[i]=swap;
}
}
}