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)(略)

时间: 2024-09-21 04:40:42

C++实践参考:数组作数据成员的相关文章

C++第4周项目5 - 数组作数据成员

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895 [项目5 - 数组作数据成员]阅读教材P255例8.4,注意到类中的数据成员可以是数组.设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number

C++第4周(春)项目4 数组作数据成员

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目4 - 数组作数据成员]阅读教材P255例8.4,注意到类中的数据成员可以是数组.设计一个工资类(Salary),其中的数据成员如下类的声明. class Salary { public: void set_salarys( ); //(1) void add_salarys(int x); //(2) void sort_salarys

C++第4周项目5 - 数组作数据成员(扩展2、3引入文件)

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895 [项目5 - 数组作数据成员]阅读教材P255例8.4,注意到类中的数据成员可以是数组.设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number

C++第4周项目5 - 数组作数据成员(扩展1动态开辟空间)

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8690895 [项目5 - 数组作数据成员]阅读教材P255例8.4,注意到类中的数据成员可以是数组.设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number

C++实践参考:两个成员的类模板

[项目-两个成员的类模板] 设有如下的类声明: class Test{ public: void SetData1(int val) { data1=val; } void SetData2(double val) {data2=val: } int GetData1() { return data1; } double GetData2() { return data2; } private: int data1; double data2; } (1)试将此类声明改为类模板声明,使得数据成员

C++实践参考——数组类运算的实现

[项目-数组类运算的实现] 设计数组类Array,为了实现测试函数中要求的功能,请补足相关的函数(构造.析构函数)和运算符重载的函数. 实现策略提示:可以将测试函数中的语句加上注释,取消一句的注释,增加相应的函数,以渐增地实现所有的功能,避免全盘考虑带来的困难. class Array { private: int* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) public: //成员函数声明 }; //要求测试函数能够运行出正确.合理的结果:

《C语言及程序设计》实践参考——数组大折腾

返回:贺老师课程教学链接   项目要求 [项目1 - 数组大折腾](1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. int main( ) { int a[20]={...}; //初始化前10个元素 //键盘输入后10个元素的值 //由前往后输出数组中所有元素的值 printf("由前往后,数组中的值是:\n"); return 0; } [参考解答]

《C语言及程序设计》实践参考——数组的排序

返回:贺老师课程教学链接  项目要求 [项目3 - 数组的排序](1)编写函数,完成冒泡排序要求不能改变下面的main函数. //两个函数bubble_sort和output_array的声明 int main( ) { int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76}; int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73}; bubble_so

C++程序设计-第6周 const用法及指针数据成员

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 第一部分 阅读程序 阅读程序,可以在上机时通过单步执行进一步和你在人脑中运行程序的过程进行对照. a.阅读程序,写出程序的运行结果并理解 #include <iostream> using namespace std; class base { private: int m; public: base(){}; base(int a) {m=a; } int get()