课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895
【项目5 - 数组作数据成员】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的职工人数。在main函数中调用你自己设计好的成员函数完成下面的功能:
(1)输入职工工资,工资保存到salary数组中,实际人数保存到number中(输入-1标志着工资输入结束);
(2)给每个人涨100元工资;
(3)对涨后的工资进行排序;
(4)输出排序后的工资。
【项目5扩展2(选做)】手工输入工资?!太让人不能忍受了。现给出包含了500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。(salary.txt可以从BB平台下载)
【项目5扩展3(选做)】增加一个成员函数,将排序后结果保存到一个文件中。
参考解答:
#include <iostream> #include <fstream> using namespace std; const N=500; class Salary { public: void read_data( ); void write_data(); void add_salarys(int x); void sort_salarys(); void show_salarys( ); private: double salarys[N]; //工资 }; void Salary::read_data( ) { int i; ifstream infile("salary.txt",ios::in); //以输入的方式打开文件 if(!infile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } for(i=0;i<N;++i) { infile>>salarys[i]; } infile.close(); } void Salary::write_data( ) { int i; ofstream outfile("salary_ordered.txt",ios::out); //以输入的方式打开文件 if(!outfile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } for(i=0;i<N;++i) { outfile<<salarys[i]<<endl; } outfile.close(); } void Salary::add_salarys(int x) { int i; for (i=0;i<N;i++) salarys[i]+=x; } void Salary::sort_salarys() { int i,j; double t; for (i=0;i<N-1;i++) for(j=0;j<N-i-1;j++) if (salarys[j]<salarys[j+1]) { t=salarys[j]; salarys[j]=salarys[j+1]; salarys[j+1]=t; } } void Salary::show_salarys( ) { int i; for (i=0;i<N;i++) cout<<salarys[i]<<"\t"; } int main( ) { Salary s; s.read_data( ); s.add_salarys(100); s.sort_salarys(); s.write_data( ); s.show_salarys( ); system("PAUSE"); return 0; }