15-1 工资数据的输入(从一个文件中读出读入另一个文件中)

/*
* 作    者: 霍雨佳
* 完成日期:2014 年6月3日
* 版 本 号:v1.0
* 问题描述:工资数据的输入
* 样例输入:
* 样例输出:
* 问题分析:
*   (1)输入若干职工的工资(1000-10000的数字),将这些数字按降序排序后输出。请在下面程序基础上开展工作。
*   (2)在软件开发过程中,为了调试程序,常常需要多次运行程序。多次运行的输入常相同,不免感到麻烦,尤其当数据量还偏多之时。人在做着毫无技术含量的事情!
*  可以用的简便方法是,用输入重定向避免这种重复:请自建一个文件a.txt,包含上面输入样例中的数据,在(1)的程序中,while之前加句freopen("a.txt","r",stdin);,return 0;
*    之前加一句fclose(stdin);,然后运行程序……。
*  (3)在实际的应用中,数据并不是从键盘输入。输入重定向的方式也并非“正当”的渠道。工程中的做法是将数据放入专门的文件等待处理。
  下载文件salary.txt,其中有不超过500名职工的工资。编程序读入这些职工的工资,将按降序排序后显示并保存到文件ordered_salary.txt中。
*/
#include <iostream>
#include<cstdio>   //支持freopen的头文件
#include<cstdlib>
#include<fstream>

using namespace std;
int main( )
{
    double salarys[500],t;
    int n=0;
    freopen("a.txt","r",stdin);  //以输入的方式打开文件 r=read
    freopen("b.txt","w",stdout); //输出结果 w=write
    while(cin>>salarys[n])
    {
        n++;   //从cin流读取数据
    }
    //将n名职工的工资排序后输出
    for(int i=0;i<n+1;i++)
    {
        for(int j=0;j<n-i;j++)
        {
            if(salarys[j]<salarys[j+1])
            {
                t=salarys[j];
                salarys[j]=salarys[j+1];
                salarys[j+1]=t;
            }
        }
    }
     for(int y=0; y<n; y++)
    {
        cout<<salarys[y]<<endl;
    }
    fclose(stdin);
    fclose(stdout);//关闭文件。用完了必须关闭,
    return 0;
}
运行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值