第三周 项目5-数组做数据成员(二)

第三周 项目五-数组做数据成员(二)
/*
 * Copyright (c) 2015, 烟台大学计算机学院
 * All rights reserved.
 * 文件名称:test.cpp
 * 作    者:冷基栋
 * 完成日期:2015年 3 月 19 日
 * 版 本 号:v1.0
*/

问题

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

代码

#include <iostream>
using namespace std;
class Salary
{
private:
    int *salarys;
    int number;
public:
    void set_salarys();
    void add_salarys(int);
    void sort_salarys();
    void show_salarys();
};
void Salary::set_salarys()
{
    int x=0,i=0;
    cout<<"请输入职工人数:";
    cin>>number;
    salarys=new int[number];
    cout<<"请输入职工工资:";
    while (i<number)
    {
        cin>>x;
        salarys[i]=x;
        i++;
    }
    number=i;
}
void Salary::add_salarys(int a)
{
    for (int i=0;i<number;i++)
    {
        salarys[i]+=a;
    }
}
void Salary::sort_salarys()
{
    int a;
    for (int i=0;i<number-1;i++)
        for (int j=0;j<number-1;j++)
    {
        if(salarys[j]>salarys[j+1])
        {a=salarys[i];
        salarys[i]=salarys[i+1];
        salarys[i+1]=a;}
    }
}
void Salary::show_salarys()
{
    for (int i=0;i<number;i++)
        cout<<salarys[i]<<endl;
}
int main()
{
    Salary s;
    s.set_salarys();
    s.add_salarys(666);
    s.sort_salarys();
    s.show_salarys();
}

运行结果:
第三周 项目5-数组做数据成员(二)

知识点总结:

int *salarys;

cin>>number;
    salarys=new int[number];

int x=0,i=0;

while (i<number)
    {
        cin>>x;
        salarys[i]=x;
        i++;
    }

学习心得:

好好学习 天天向上