第三周项目5-数组作数据成员
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( ):显示工资信息
(1)在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。
/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
using namespace std;
class Salary
{
private:double salarys[50];int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );};
void Salary::set_salarys()
{int i=0,sal;while(cin>>sal && sal!=-1){salarys[i]=sal;i++;}number=i+1;
}
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()
{for (int i=0;i<number;i++)cout<<salarys[i]<<" ";
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();return 0;
}
(2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。
/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
using namespace std;
class Salary
{
private:double *salarys;int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );};
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()
{for (int i=0;i<number;i++)cout<<salarys[i]<<" ";
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();return 0;
}
(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。
/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class Salary
{
private:double salarys[500];int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );};
void Salary::set_salarys()
{int i;ifstream infile("salarys.txt",ios::in);if(!infile){cerr<<"打开文件失败!"<<endl;exit(1);}i=0;while(infile>>salarys[i])i++;infile.close();number=i;
}
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()
{for (int i=0; i<number; i++)cout<<salarys[i]<<endl;
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();return 0;
}
(4)增加一个成员函数,将排序后结果保存到一个文件中。
/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class Salary
{
private:double salarys[500];int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );void save_date();};
void Salary::set_salarys()
{int i;ifstream infile("salarys.txt",ios::in);if(!infile){cerr<<"打开文件失败!"<<endl;exit(1);}i=0;while(infile>>salarys[i])i++;infile.close();number=i;
}
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::save_date()
{int i;ofstream outfile("salarys_sort.txt",ios::out);if(!outfile){cerr<<"打开文件失败!"<<endl;exit(1);}for(i=0; i<number; ++i){outfile<<salarys[i]<<endl;}outfile.close();}
void Salary::show_salarys()
{for (int i=0; i<number; i++)cout<<salarys[i]<<endl;
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();a.save_date();return 0;
}
@ Mayuko
转载于:https://www.cnblogs.com/mayuko/p/4567529.html
第三周项目5-数组作数据成员相关推荐
- 第八周项目一-数组作数据成员(2)
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月19日*版 本 号: ...
- 第八周项目一-数组作数据成员(1)
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月17日*版 本 号: ...
- 第八周项目一-数组做数据成员(3)
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月19日*版 本 号:v1. ...
- 第五周项目2-对象作为数据成员
回想Engineer类的数据成员,有眼镜.背包等.某Engineer的眼镜.背包,是Glass.Bag类的对象.类中的数据成员,其类型可以是简单类型,也可以是类.通过这种方式,将某些类组合到另外的类中 ...
- 第六周上机项目2-对象作为数据成员.
/* *程序的版权和版本声明部分: *Copyright(c)2013,烟台大学计算机学院学生 . *All rights reserved. *作者:李家豪 *完成日期:2014年4月8日. *版本 ...
- 数据结构上机实践第三周项目2 - 建设“顺序表”算法库
[项目2 - 建设"顺序表"算法库] 领会"0207将算法变程序"部分建议的方法,建设自己的专业基础设施算法库.这一周,建的是顺序表的算法库. 算法库包括两 ...
- 第三周项目3-程序的多文件组织
利用多文件组织,重新实现项目2.其中,整个项目包括3个文件: 主文件: main.cpp,用于定义main()函数 头文件: triangle.h,头文件,声明类,定义内置成员函数 类定义文件: tr ...
- 数据结构上机实践第三周项目3- 求集合并集
[项目 - 求集合并集] 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员.设计算法,用函数unionList(List LA, List LB ...
- 第三周项目四-穷举法解决组合问题(1)
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年3月15日 *版 本 ...
最新文章
- PHP实时生成并下载超大数据量的EXCEL文件
- 人工智能中“图神经网络GNN”如何理解?(附斯坦福综述)
- js 查找树节点 数组去重
- redis info memory
- 算法基础数学知识篇(1)之----- 排列数组
- 成都将于1月27日开启数字人民币红包活动
- 51nod-1562:玻璃切割(O(n)模拟)
- 三倍快乐!推荐跨Win/Mac/Linux平台免费优质软件
- Mand Mobile - 基于金融场景的Vuejs组件库
- 4-2. 打印九九口诀表
- 微信网页授权问题记录
- kernel核函数是什么、用来干什么 及其详细推导
- OpenStack搭建私有云一:认证服务
- tplink 虚拟服务器没有https,tplink虚拟服务器设置
- 甲减、甲状腺相关疾病最新研究、治疗进展(2021年下半年)
- 自定义loading组件
- 【AI案例】(二)搭建大数据Python生态知识体系
- Vue学习笔记: Vue + Element-ui搭建后台管理系统模板
- TKO 6-1 DP入门之1058(寻找第n个因数只有2、3、5、7的数字)
- 怎么用计算机算lnx,如何用普通计算器计算复利