C++实践参考:数组作数据成员_c++ 数组成员-程序员宅基地

技术标签: C++  

【项目 - 数组作数据成员】下面是设计好的一个工资类(Salary):

class Salary  
{  
public:
    void set_salarys( );//输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
    void add_salarys(int x); //给每个人涨x元工资
    void sort_salarys(); //对工资由大到小排序
    void show_salarys( ); //显示工资信息
private:  
    double salarys[50]; //多人的工资  
    int number;  //实际人数  
};  

  (1)实现Salary类中的成员函数,在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。
  (2)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),增加一个成员函数,用于从文件中读出数据,再增加一个成员函数,将排序后结果保存到一个文件中。编写main函数,测试你扩充的功能。
  (3)用多文件的方式组织最后的程序。

参考解答:

(1)

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;  
} 

(2)

#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;  
} 

(3)(略)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sxhelijian/article/details/51165194

智能推荐

NeurIPS 2023 | FedFed:特征蒸馏应对联邦学习中的数据异构-程序员宅基地

文章浏览阅读75次。作者 |杨智钦单位 |北京航空航天大学来源|将门创投在本文中,我们提出了一种新的即插即用的联邦学习模块,FedFed,其能够以特征蒸馏的方式来解决联邦场景下的数据异构问题。FedFed首次探索了对数据中部分特征的提取与分享,大量的实验显示,FedFed能够显著地提升联邦学习在异构数据场景下的性能和收敛速度。论文标题:FedFed: Feature Distillation against..._about [neurips 2023] "fedfed: feature distillation against data heterogeneit

《Ray Tracing in One Weekend》——Chapter 1: Output an image_c++如何输出图片-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏3次。《Ray Tracing in One Weekend》目录 第一部分:学习总结问题二:用C++输出第一张图片 第二部分:原文截图《Ray Tracing in One Weekend》目录_c++如何输出图片

spring-cloud-kubernetes与k8s的configmap_spring-cloud-starter-kubernetes-config maven-程序员宅基地

文章浏览阅读8k次,点赞7次,收藏9次。spring-cloud-kubernetes-config是spring-cloud-kubernetes框架下的一个库,用于将kubernetes的configmap作为配置文件,提供给springboot应用_spring-cloud-starter-kubernetes-config maven

BZOJ2753: [SCOI2012]滑雪与时间胶囊(最小生成树)-程序员宅基地

文章浏览阅读307次。传送门题意: n个有高度的点和m条边,边只能从高点到低点走,求最小树形图??题解: 最小生成树。 朱刘算法求最小树形图只能得70分,考虑更高效的算法。首先对图分层,发现低层节点对高层答案没有影响,考虑先处理高层的边。现在假设已经处理了高层的所有边,对于本层的边,其实就是一颗最小生成树。因为高层连向本层的边看做双向边没有任何影响。那么直接把边按照层数排序,第二关键字用权值排序即可。#includ

PySide:Python语言在GUI开发中的利器-程序员宅基地

文章浏览阅读1.3k次。python GUI开发中PySide2、PySide6及PyQt间区别,python版本要求,官方文档支持等_pyside

opencv+python Hough变换的基本原理_opencv python hough_multi_scale-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏19次。Hough变换思想(参数空间变换):在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。在实际应用中,y=kx+b形式..._opencv python hough_multi_scale

随便推点

vs2019安装和使用教程(详细)-程序员宅基地

文章浏览阅读10w+次,点赞565次,收藏2.9k次。vs2019安装和使用教程(详细)_vs2019

【渝粤题库】陕西师范大学201941 Java程序设计 作业(专升本)_which of the following are correct? _____ a. strin-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏2次。《JAVA程序设计》作业一、选择题编译HelloWorld.java的正确命令是:java HelloWorld.class B)java HelloWorld.java C)javac HelloWorld.java正确运行HelloWorld.java的正确命令是:java HelloWorld B)javac HelloWorld.java C)javac HelloWorld.class下面程序代码,使用多行注释正确的是:A) // int k=9;// int j=8_which of the following are correct? _____ a. string[] list = new string{

Zynq UltraScale+ MPSoC:嵌入式设计 UG1209 视频教程_zynq ultrascale+ mpsoc 嵌入式设计方法指南-程序员宅基地

文章浏览阅读812次。注:本文转自赛灵思中文社区论坛,源文链接在此。本文原作者为XILINX工程师。以下为个人译文,仅供参考,如有疏漏之处,还请不吝赐教。本篇博文提供了一份视频列表,用于展示 (UG1209) 中的教程。这些视频是使用 Vivado Design Suite 2019.1 版和赛灵思软件开发套件 (SDK) 创建的。其中所含示例均为针对 Zynq UltraScale+ MPSoC ZCU102 Rev1 评估板的示例。视频 1 演示了如何使用 ZCU102 评估板来运行应用。虽然大部分视频都使_zynq ultrascale+ mpsoc 嵌入式设计方法指南

浅谈拉格朗日插值法_y_j_gi-程序员宅基地

文章浏览阅读284次。拉格朗日插值法_y_j_gi

hbase性能调试 转-程序员宅基地

文章浏览阅读263次。_hfile.format.version

MIT算法导论——第五讲.Linear Time Sort_linear time sorting-程序员宅基地

文章浏览阅读896次。本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记。所有内容均来自MIT公开课Introduction to Algorithms中Charles E. Leiserson和Erik Demaine老师的讲解。(http://v.163.com/special/opencourse/algorithms.html)第五节-------线性时间_linear time sorting