第15周报告3
实验目的:学会ASCII文件的操作
实验内容:从文件中读入数据,排序并输出到另外一个文件中
/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: ASCII文件的操作
* 作 者: 2011级 114-3 张宗佳
* 完成日期:2011年11月 23 日
* 版 本 号: vc.1
* 对任务及求解方法的描述部分
* 输入描述:文件salary.txt
* 问题描述:从文件salary.txt中读入500名工人的工资,全部增加100元后进行排序(好事,涨工资了),将排序后的结果在屏幕上输出,并保存到文件ordered_salary.txt中
* 程序输出:ordered_salary.txt
*/
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
void input_salary();
void add_money();
void bubble_sort(); //降序排列
void output_array();//输出排列后的工资
void ordered_salary();//用于保存文件
double salary[500];
int main()
{
input_salary();
add_money();
bubble_sort(); //降序排列
output_array();
ordered_salary();
return 0;
}
void input_salary()
{
int i;
ifstream infile("salary.txt",ios::in);
if(!infile)
{
cerr << "open error!" << endl;
exit(1);
}
for(i = 0; i < 500; i++)
{
infile >> salary[i];
}
infile.close();
return ;
}
void add_money()
{
int i;
for (i = 0; i < 500; i++)
{
salary[i] = salary[i] + 100;
}
return ;
}
void bubble_sort()
{
int i, j, t;
for(i = 0;i < 499; i++)
{
for(j = 0;j < 499 - i; j++)
{
if(salary[j] > salary[j+1])
{
t = salary[j];
salary[j] = salary[j+1];
salary[j+1] = salary[j];
}
}
}
return ;
}
void output_array()
{
int i;
for(i = 0; i < 499; i++)
{
cout << setw(10) << salary[i];
if(i % 5 == 0)
{
cout << endl;
}
}
return ;
}
void ordered_salary()
{
ofstream outfile("ordered_salary.txt",ios::out);
for(int i = 0;i < 499; i++)
{
outfile << salary[i] << endl;
}
outfile.close();
return ;
}
经验积累:
1.读入文件时,本文件夹中一定要有要读入的文件
2.整个数组的输出可以以调用函数来实现
3.用完文件之后一定要关闭,否则会丢失
上机感言:
一开始没想到用函数的,看了同学的博文之后才知道,原来文件的读入和输出也可以写成函数..是我太死脑筋了..还有要读入的文件一定要在本文件夹内,一开始我把要读入的文件和程序文件夹放到了一起,一运行竟然是open error..纠结了老半天,才豁然开朗,那文件不在文件夹内...终于编出来了..呼~