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;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/287399.html
標籤:其他
上一篇:Win10——如何使用Bootchart工具獲取Android R開機時序
下一篇:Android 發送短信
