/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:呼亚萍
* 完成日期:2015年 3月 25日
* 版 本 号:v1.0
*
* 问题描述:用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。
* 程序输入:相应的程序
* 程序输出:每个人涨500元工资,排序后工资数据
*/
main.cpp:
#include <iostream>
#include "salary.h"
using namespace std;
int main()
{
Salary s1;
cout<<"请输入实际人数:";
s1.set_salarys();
cout<<endl;
cout<<"为每位职工增加500元工资后工资为:"<<endl;
s1.add_salarys(500);
cout<<endl;
cout<<"从小到大对工资排序:"<<endl;
s1.sort_salarys();
s1.show_salarys();
return 0;
}
salary.cpp:
#include <iostream>
#include "salary.h"
using namespace std;
void Salary::set_salarys()
{
cin>>number;
int i;
double x;
Salarys=new double[number];//开辟一段储存number个数据的空间
cout<<"请输入每位职工的工资:"<<endl;
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]=Salarys[i]+x;//为每一个工人加工资
cout<<Salarys[i]<<'\t';
}
}
void Salary::sort_salarys()//用冒泡法给工资排序
{
int i,j;
double t;
for(i=0; i<number; 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]<<" "<<endl;
}
}
sarlay.h
#ifndef SALARY_H_INCLUDED
#define SALARY_H_INCLUDED
class Salary
{
public:
void set_salarys();//输入职工工资
void add_salarys(int);//给每人涨工资
void sort_salarys();//对工资排序
void show_salarys();//显示工资信息
private:
double *Salarys;//定义为指针,将来指向一个动态数组
int number;//实际人数
};
#endif // SALARY_H_INCLUDED
运算结果:
知识点总结:
用指针指向数组,在使用new double 为其开辟适当大的存储空间!
学习心得:
遇到不会的问题要弄明白!
本文介绍了一个使用动态内存分配来管理不确定数量员工薪资的C++程序,并实现了薪资加薪及排序功能。通过指针指向动态分配的数组空间,有效地解决了固定数组大小带来的问题。

被折叠的 条评论
为什么被折叠?



