第三周 【项目5 - 数组作数据成员】(2)

来源:互联网 发布:linux删除u盘文件 编辑:程序博客网 时间:2024/05/18 01:45

问题描述:

阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中类的数据成员如下

class Salary  {  private:      double salarys[50]; //多人的工资      int number;  //实际人数  };  


要设计的成员函数有:
  • void set_salarys( ):输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
  • void add_salarys(int x):给每个人涨x元工资
  • void sort_salarys():对工资排序
  • void show_salarys( ):显示工资信息

(2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。

代码:

#include <iostream>using namespace std;class Salary{private:    double *salary;    int number;public:    void set_salarys();    void add_salarys(int x);    void sort_salarys();    void show_salarys();};void Salary::set_salarys(){    number=0;    int i;    cout<<"请输入职工人数: ";    cin>>i;    salary=new double[i];    cout<<"请依次输入员工的工资:\n";    while (cin>>salary[number]&&i>number)        number++;}void Salary::add_salarys(int x){    int i=0;    while (i<number)    {        salary[i]+=500;        i++;    }}void Salary::sort_salarys(){    int i=0,j=0,t;    for(i=0;i<=number;i++)        for(j=0;j<=number-i-1;j++)    {        if(salary[j]>salary[j+1])        {            t=salary[j+1];            salary[j+1]=salary[j];            salary[j]=t;        }    }}void Salary::show_salarys(){    int i=0;    while (i<=number)    {        cout<<"第"<<i<<"为员工的工资是\t"<<salary[i]<<'\12';        i++;    }}int main( ){    Salary worker;    worker.set_salarys( );    worker.add_salarys(500);    worker.sort_salarys();    cout<<"加薪排序后的工资:\n";    worker.show_salarys( );    return 0;}

运行结果:


0 0
原创粉丝点击