두 개의 디스크 파일 생성 f1.dat와 f2.dat, 컴파일러는 다음과 같은 작업을 실현한다
2954 단어 프로그램 설계
2) f1.dat는 10개의 수를 읽고 f2.dat 파일의 원래 데이터 뒤에
3) f2.dat에서 20개의 정수를 읽고 그것들을 작은 순서에서 큰 순서로 f2에 저장합니다.dat에서 (원래의 데이터를 보존하지 않음)
#include
#include
#include
using namespace std;
//fun1 20 ,
void fun1()
{
int a[10];
ofstream outfile1("f1.dat"),outfile2("f2.dat"); //
if(!outfile1)
{
cerr << "open f1.dat error!" << endl;
exit(1);
}
if(!outfile2)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
cout << "enter 10 integer numbers:" << endl;
for (int i=0;i<10;i++) // 10 f1.dat
{
cin >> a[i];
outfile1 << a[i] << " ";
}
cout << "enter 10 integer numbers:" << endl;
for (int i=0;i<10;i++) // 10 f2.dat
{
cin >> a[i];
outfile2 << a[i] << " ";
}
outfile1.close();
outfile2.close();
}
// f1.dat 10 , f2.dat
void fun2()
{
ifstream infile("f1.dat"); //f1.dat
if(!infile)
{
cerr << "open f1.dat error!" << endl;
exit(1);
}
ofstream outfile("f2.dat",ios::app); //f2.dat , ,
if (!outfile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
int a;
for (int i=0;i<10;i++)
{
infile >> a; // f2.dat
outfile << a << " "; // f2.dat
}
infile.close();
outfile.close();
}
// f2.dat 20 , f2.dat
void fun3()
{
ifstream infile("f2.dat");
if(!infile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
int a[20];
int i,j,t;
for (i=0;i<20;i++)
infile >> a[i];
for (i=0;i<19;i++) //
for (j=0;j<19-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
infile.close();
ofstream outfile("f2.dat",ios::out);
//f2.dat ,
if(!outfile)
{
cerr << "open f2.dat error!" << endl;
exit(1);
}
cout << "data in f2.dat:" << endl;
for (i=0;i<20;i++)
{
outfile << a[i] << " ";
cout << a[i] << " ";
}
cout << endl;
outfile.close();
}
int main()
{
fun1();
fun2();
fun3();
cout << "Hello world!" << endl;
return 0;
}
Code::Blocks에서 실행됩니다. 담호강 C++ 프로그램 설계를 참고하십시오.