C++第4周(春)项目4 数组作数据成员
来源:互联网 发布:制作工作牌软件 编辑:程序博客网 时间:2024/06/04 08:13
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接
【项目4 - 数组作数据成员】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员如下类的声明。
class Salary {public: void set_salarys( ); //(1) void add_salarys(int x); //(2) void sort_salarys(); //(3)void show_salarys( ); //(4) private:double salarys[50]; //工资 int number;//实际人数 };(1)输入职工工资,工资保存到salary数组中,实际人数保存到number[]中(输入-1标志着工资输入结束);
(2)给每个人涨500元工资(add_salarys是有参函数,在调用时,500当实参);
(3)对涨后的工资进行排序;
(4)输出排序后的工资。
(5)在main函数定义Salary类的对象,调用你自己设计好的成员函数,完成相关的工作。
======参考解答======
#include <iostream>using namespace std;class Salary{public:void set_salarys( ); //输入工资void add_salarys(int x); //涨工资void sort_salarys(); //排序工资void show_salarys( ); //显示工资private:double salarys[50]; //工资int number;//实际人数};void Salary::set_salarys( ){int x,i=0;cin>>x;while(x>0){salarys[i]=x; //工资保存到数组数据成员中++i;cin>>x;}number=i; //number是数据成员,记录下职工人数}void Salary::add_salarys(int x){int i;for (i=0;i<number;i++)salarys[i]+=x;}void Salary::sort_salarys(){int i,j;double t;for (i=0;i<number-1;i++)for(j=0;j<number-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<number;i++)cout<<salarys[i]<<" ";}int main( ){Salary s;s.set_salarys( );s.add_salarys(500);s.sort_salarys();s.show_salarys( );return 0;}
【项目4扩展1(选做)】
使用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用教材P217所讲的动态分配内存的运算符new,开辟一个大小正好的连续空间,完成上面的工作。
======参考解答======
#include <iostream>using namespace std;class Salary{public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );private:double *salarys; //工资,定义为指针,将来指向一个动态数组int number;//实际人数};void Salary::set_salarys( ){int x,i;cout<<"请输入职工人数: ";cin>>number;salarys=new double[number]; //分配大小正好合适的空间存放数据cout<<"请输入职工的工资: ";for(i=0;i<number;++i){cin>>x;salarys[i]=x;}}void Salary::add_salarys(int x){int i;for (i=0;i<number;i++)salarys[i]+=x;}void Salary::sort_salarys(){int i,j;double t;for (i=0;i<number-1;i++)for(j=0;j<number-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<number;i++)cout<<salarys[i]<<" ";}int main( ){Salary s;s.set_salarys( );s.add_salarys(500);s.sort_salarys();s.show_salarys( );return 0;}
【项目4扩展2(选做)】 下载salary.txt文件
手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。
【项目4扩展3(选做)】
增加一个成员函数,将排序后结果保存到一个文件中。
======参考解答======
#include <iostream>#include <fstream>#include <cstdlib>using namespace std;const int 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]; //工资, 用指针更好 int number; //人数};void Salary::read_data( ){ int i; ifstream infile("salary.txt",ios::in); //以输入的方式打开文件 if(!infile) //测试是否成功打开 { cerr<<"open error!"<<endl; exit(1); } i=0; while(infile>>salarys[i]) i++; number=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<number; ++i) { outfile<<salarys[i]<<endl; } outfile.close();}void Salary::add_salarys(int x){ int i; for (i=0; i<number; i++) salarys[i]+=x;}void Salary::sort_salarys(){ int i,j; double t; for (i=0; i<number-1; i++) for(j=0; j<number-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<number; i++) cout<<salarys[i]<<"\t";}int main( ){ Salary s; s.read_data( ); s.add_salarys(500); s.sort_salarys(); s.write_data( ); s.show_salarys( ); return 0;}
【项目4扩展4(选做)】将项目4用多文件的方式组织起来。
卓越网(接受预订)
图灵社区 官方试读本下载
豆瓣
==================== 迂者 贺利坚 CSDN博客专栏=================|== IT学子成长指导专栏 专栏文章分类目录(不定期更新) ==||== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==|===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====
0 0
- C++第4周项目5 - 数组作数据成员
- C++第4周(春)项目4 数组作数据成员
- 第四周项目4-数组作数据成员
- 第8周项目:【项目 1 -数组作数据成员】
- C++第4周项目5 - 数组作数据成员(扩展1动态开辟空间)
- C++第4周项目5 - 数组作数据成员(扩展2、3引入文件)
- 第3周项目5-数组作数据成员(4)
- 第3周项目5数组作数据成员
- 第3周项目5数组作数据成员
- 第8周项目1-数组作数据成员(2)
- 第8周项目1 - 数组作数据成员 (1)
- 第8周项目1 - 数组作数据成员 (2)
- 第8周项目1- 数组作数据成员
- 第二周 项目五:数组作数据成员(4)
- 第三周 【项目5 - 数组作数据成员】(4)
- 第三周 项目五--数组作数据成员(4)
- 第三周项目5(4)-数组作数据成员
- 第三周项目五数组作数据成员(4)
- Eclipse调试器和Debug 视图
- myeclipse使用egit
- 一步步学习SPD2010--第八章节--理解工作流(1)--处理工作流
- hdu 4336 Card Collector
- uC/OS-III系统的一些知识(4)(根据《嵌入式实时操作系统uC/OS》--Jean J. Labrosse)
- C++第4周(春)项目4 数组作数据成员
- Linux软连接和硬链接
- Struts 中的一个action 包含多个请求
- IOS7的状态栏和导航栏
- 用例图中包含(include)扩展(extend)和泛化(generalization)关系详解
- ios开发总结的整个流程和找到的资料贴出来
- Matlab作图后,使用data cursor实现显示多个点的数据值
- 第二周作业
- advice