第16周-任务1-涨工资了

简介: 【题目】从文件salary.txt中读入500名工人的工资,全部增加100元后进行排序,将排序后的结果在屏幕上输出,并保存到文件ordered_salary.txt中。   <下载相关文件> 【说明】这个题目只是练习ASCII文件的读写,顺便排个序什么的。总体的结构可以是: 将文件中的数据读出来(到一个数组中); 加工资; 排序; 将排序后数组中的值保存到文件

【题目】从文件salary.txt中读入500名工人的工资,全部增加100元后进行排序,将排序后的结果在屏幕上输出,并保存到文件ordered_salary.txt中。

  <下载相关文件>


【说明】这个题目只是练习ASCII文件的读写,顺便排个序什么的。总体的结构可以是:

  • 将文件中的数据读出来(到一个数组中);
  • 加工资;
  • 排序;
  • 将排序后数组中的值保存到文件中;

  仅此而已,有些同学忘了自己分析,简单的问题不知套哪里来的“例子”,用了好几个函数,传参数把自己传晕了,或者没有传参数错得莫名其妙。

  任何时候,都要先自己想一想。

  此为上计。


【参考程序】

#include <fstream>
#include<iostream>
using namespace std;
int main( )
{
    float a[500],t;
    int i,j;
    ifstream infile("salary.txt",ios::in);  //以输入的方式打开文件
    if(!infile)       //测试是否成功打开
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    for(i=0;i<500;i++)
        infile>>a[i];   //从文件中读取数据
    infile.close();
    for(i=0;i<10;i++)
        a[i]+=100; //涨工资了

    for(j=0;j<500-2;j++)    //排序,用冒泡法,其他法类似
    {
        for(i=0;i<500-j-1;i++)   
            if (a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
    }
    //输出结果
    ofstream outfile("ordered_salary.txt",ios::out);
    if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    for(i=0;i<500;i++)
    {
        outfile<<a[i]<<endl;
        if(i%5==0) cout<<endl;
        cout<<a[i]<<"\t";
    }
    outfile.close();     //关闭文件。用完了必须关闭,否则会丢失数据
    system("pause");
    return 0;
}


【又一个参考】

来自tao6655306的解答,我给的评论是:很好,面向对象的思维已经深入你心!面向过程中走出来的我却未这样想。老了,跟不上形势了。原文链接

#include<iostream>    
#include<fstream>   
using namespace std;    
class Salary  
{  
public:  
    void ordered_salary_add();  
    void ordered_salary();  
    void input_salary();
  void ordered_salary_txt();
private:         
    double salary[500];  
    int number;  
};
int main()  
{  
    Salary s1; 
	//cout<<"500人的原始工资为:"<<endl;
    s1.input_salary();  
    //cout<<endl;  
    cout<<"排序后工资为:";  
    cout<<endl;  
    s1.ordered_salary();  
    cout<<endl;  
	s1.ordered_salary_txt();
	system("PAUSE");  
    return 0;  
}
void Salary::input_salary()  
{  
    int i=0;  
	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();
	//for(i=0;i<500;i++)
		//cout<<salary[i]<<"  ";
	//cout<<endl;
    number=500;  
}
void Salary::ordered_salary_add()  
{  
    int i;  
    for (i=0;i<number;i++)  
    {  
        salary[i]=salary[i]+100;  
        //cout<<salary[i]<<"  ";  
    }  
    return;  
}  
void Salary::ordered_salary()  
{  
	
    int i,j;  
    double t;  
    for(i=0;i<number-1;i++) 
	{
        for(j=0;j<number-i-1;j++) 
		{
            if(salary[j]>salary[j+1])  
            {  
                t=salary[j];  
                salary[j]=salary[j+1];  
                salary[j+1]=t;  
            }  
		}
	}
	for (i=0;i<number;i++)  
	{  
		cout<<salary[i]<<"  ";  
	}  
	return;  
}  

void Salary::ordered_salary_txt()
{
	ofstream outfile("ordered_salary.txt",ios::out);
	if(!outfile)
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	for(int i=0;i<500;i++)
		outfile<<salary[i]<<"\n";
	outfile.close();
	return ;
}



目录
相关文章
|
2月前
|
关系型数据库 MySQL
MySQL查询当天昨天明天本月上月今年等数据
MySQL查询当天昨天明天本月上月今年等数据
20 2
|
前端开发 程序员
面试周连续剧之轻车熟路
接着上一篇文章继续聊面试经历,通过前两天的面试经历,以及不断总结完善自己的知识储备,又系统性的准备了一下前端面试知识点,应对一般的面试已经不成问题,可以说自己已经有了“反客为主”的能力,那么马上开启让人愉悦的面试第三天吧。
81 1
面试周连续剧之轻车熟路
|
移动开发 前端开发 小程序
面试周连续剧之首战大捷
2022年注定是一个不平凡的一年,因为有着难得一遇的对称日:20220222,即2022年2月22日,农历的正月廿二,也是星期二,总之是一个不平凡的一年。即然不平凡,那就得搞事情,然后就果断的选择找工作,顺便沾沾不平凡之年的运气。
68 1
面试周连续剧之首战大捷
|
存储 数据可视化 开发者
带薪玩一周游戏,还要涨工资
带薪玩游戏,是多么开心的事情,我就找到了。 前段时间,公司接到一个模拟业务场景的项目,需要在图形界面上模拟业务场景,比如人跑动,拖拽物体等,从而获取不太业务场景的模拟数据。
90 0
带薪玩一周游戏,还要涨工资
|
Java 程序员 应用服务中间件
月薪5千加班到凌晨,月薪5万5点下班,高级程序员到底强在哪里?
说起程序员人们的第一印象就是工资高、加班凶、话少钱多头发少。再加上现在科技互联网公司太吃香,bat、华为小米等公司程序员加班情况被广泛传播,程序员用生命在敲代码的印象刻在了很多人的心里。
1240 0
2014最后一天到2015新年第一天凌晨4加班中
2014最后一天到2015新年第一天凌晨4加班中
984 0
|
C++ C语言
C++第11周(春)项目2 - 职员有薪水了
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目2 - 职员有薪水了】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分
943 0