第15周报告3之ASCII文件的操作

 

第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..纠结了老半天,才豁然开朗,那文件不在文件夹内...终于编出来了..呼~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值