/*实验目的:学会ASCII文件的操作
实验内容:从文件中读入数据,排序并输出到另外一个文件中
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:工资
* 作 者:付文杰
* 完成日期:2011 年 6 月 03日
* 版 本号:x1.0
* 对任务及求解方法的描述部分
* 输入描述:文件salary.txt
* 问题描述:从文件salary.txt 中读入500 名工人的工资,全部增加100 元后进行排序,将排序后的结果在屏幕上输出,
并保存到文件ordered_salary.txt 中。
* 程序输出:ordered_salary.txt
* 程序头部的注释结束
*/
#include <fstream>
#include <iomanip>
#include <iostream>
using namespace std;
void ouput_salary(double a[],int num);//输出工资;
void cin_salary(double a[],int num);//从文件得到工资;
void cout_salary(double a[],int num);//储存工资;
void bubble_sort(double a[], int num);//排序;
void add_salary(double a[],int num,double money);//加工资;
int main( )
{
double a[500];
int num=500;
cin_salary(a,num);//从文件读入工资;
cout<<"加工资排序前员工工资:"<<endl;
ouput_salary(a,num);//输出工人工资;
add_salary(a,500,100.0);//加工资;
bubble_sort(a, num);//排序;
cout<<"加工资排序后员工工资:"<<endl;
ouput_salary(a,num);//输出工资;
cout_salary(a,num);//保存到文件;
system("pause");
return 0;
}
void cin_salary(double a[],int num)
{
int i;
ifstream infile("salary.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0;i<num;i++)
{
infile >> a[i];
}
infile.close();
cout<<endl;
}
void cout_salary(double a[],int num)
{
ofstream outfile("ordered_salary.txt",ios::out);
if(!outfile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(int i=0;i<num;i++)
outfile<<a[i]<<endl;
outfile.close();
}
void bubble_sort(double a[], int num)
{
int i,j,k;
double t;
for(i=0;i<num-1;i++)
{
k=i;
for(j=i+1;j<num;j++)
if(a[j]<a[k]) k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
void ouput_salary(double a[],int num)
{
int i;
for(i=0;i<=num-1;i++)
{
cout << setiosflags(ios::left) << setw(10)<< a[i];
if((i+1) % 8 == 0)cout<<endl;
}
cout<<endl;
}
void add_salary(double a[],int num,double money)
{
int i;
for(i=0;i<num-1;i++)
{
a[i]=a[i]+money;
}
}
第16周任务1
最新推荐文章于 2024-11-07 17:44:50 发布