c++设计一个整数集合类Set

一、设计一个整数集合类Set
1、数据成员:string name;//存放集合元素名称
int num;//集合中整数值
构造函数:Set(string s. int a)
成员函数:get函数
void disp(//输出集合所有元素
二、继承类SetFloat它是Set的派生类(子类)公有继承;数据成员:float f://集合中单精度浮点数
构造函数:
SetFloat (string s,int a,float m)//重载父类成员函数:getF和setFvoid disp ()//重载父类函数
3)成员函数:用成员重载的方式完成两个集合类中整数对象的相减
4)友元函数:用友员重载的方式完成两个集合类中浮点对象的相加运算
5)编写主函数进行测试三、编写主函数进行测试
求完整代码,谢谢啦

Set.h


#include<iostream>
#include<stdio.h>
#include<algorithm>
#ifndef SET_H_INCLUDED
#define SET_H_INCLUDED
 
using namespace std;
class Set
{
private:
    double* set;//the pointer to double array
    int number;//the number of elements in array
public:
    Set()//constructor with no args
    {
        set=NULL;
        number=0;
    }
    Set(const int number,const double* set)//constructor with tow args
    {
        if(number>0&&set!=NULL)
        {
            this->number=number;
            double tmp[number];
            this->set=new double[number];
            for(int i=0;i<number;i++)
            {
                this->set[i]=set[i];
            }
            sort(this->set,this->set+number);
 
        }else if(number==0||set==NULL)
        {
            this->set=NULL;
            this->number=0;
            printf("An empty set will be created.\n");
        }else if(number<0)
        {
 
            printf("%d must be greater than or equal to zero.\n An empty set will be created.\n",number);
            this->set=NULL;
            this->number=0;
        }
 
 
 
    }
 
 
        void print()const//the print function
        {
            for(int i=0;i<this->number;i++)
            {
                cout<<this->set[i]<<"  ";
            }
            cout<<endl;
        }
 
 
 
 
        int getNumber()const//the function return the number of elements in array
        {
            return this->number;
        }
 
        void setSet(const int n,const double* s)//the setSet function
        {
            if(n>0&&s!=NULL)
            {
                this->number=n;
                this->set=new double[n];
                for(int i=0;i<n;i++)
                {
                    this->set[i]=s[i];
                }
                sort(this->set,this->set+n);
 
            }else if(n==0||s==NULL)
            {
                this->number=0;
                this->set=NULL;
                printf("An empty set will be created.\n");
            }else if(n<=0)
            {
                printf("%d must be greater than or equal to zero.\n An empty set will be created.\n",n);
                this->set=NULL;
                this->number=0;
            }
 
        }
 
 
 
        //tow friend functions overriding operator
        friend Set operator+(const Set a,const Set b);
        friend Set operator*(const Set a,const Set b);
 
};
 
Set operator+(const Set a,const Set b)
    {
        int na=a.getNumber();
        int nb=b.getNumber();
        double tmp[a.getNumber()+b.getNumber()+10];
        int i;
        for(i=0;i<na;i++)
        {
            tmp[i]=a.set[i];
        }
        for(int j=0;j<nb;j++)
        {
            tmp[i+j]=b.set[j];
        }
        sort(tmp,tmp+na+nb);
        double tmp_2[a.getNumber()+b.getNumber()+10];
        i=0;
        for(int j=0;j<(na+nb);j++)
        {
            if(j==0)
            {
                tmp_2[i]=tmp[j];
                i++;
            }else if(j>0&&tmp[j]!=tmp[j-1])
            {
                tmp_2[i]=tmp[j];
                i++;
            }
 
        }
 
        Set result(i,tmp_2);
        return result;
    }
 
Set operator*(const Set a,const Set b)
{
    double tmp[a.getNumber()+b.getNumber()+10];
    int cnt=0;
    for(int i=0;i<a.getNumber();i++)
    {
        for(int j=0;j<b.getNumber();j++)
        {
            if(a.set[i]==b.set[j])
            {
                tmp[cnt]=a.set[i];
                cnt++;
                break;
            }
        }
    }
 
    Set result(cnt,tmp);
    return result;
 
}
 
 
#endif // SET_H_INCLUDED

main.cpp

#include <iostream>
#include<stdio.h>
#include"Set.h"
using namespace std;
 
int main()
{
 
//We test the class Set here.
 
 
//  1. Declare two double arrays a and b that contain the following values
//     (in the given order).
//      array a = -6.2, -3.1, 0.0, 1.9, 5.2, 8.3, 9.5, 10.7, 11.0, 12.5
//      array b = -8.1, -3.1, 0.0, 2.5, 5.8, 8.3, 9.5, 11.0
 
    double a[]={-6.2,-3.1,0.0,1.9,5.2,8.3,9.5,10.7,11.0,12.5};
    double b[]={-8.1,-3.1,0.0,2.5,5.8,8.3,9.5,11.0};
 
//  2. Calculate the size of a and b using the sizeof function.  DO NOT assume
//     that array a has 10 elements and DO NOT assume b has 8 elements.
 
    int na=sizeof(a)/8;
    int nb=sizeof(b)/8;
 
 
//  3. If na is the size of a and nb the size of b then create a Set object
//     named X using the constructor that takes NO parameters (this makes X
//     the empty set).  Then use the setSet function for set X, passing it
//     na and a.  This sets X to a set that contains the numbers in array a.
//  4. Then print X.
//  5. Create a second Set object named Y with the constructor that takes two
//     parameters.  Pass nb abd b to the constructor.
//  6. Then print Y.
 
    Set X(na,a);
    Set Y(nb,b);
 
 
    X.print();
    Y.print();
 
//  7. Create a Set object named Z using the constructor that takes NO parameters
//     (this makes Z the empty set).
//  8. Calculate the set union Z = X + Y and print Z.
//  9. Calculate the set intersection Z = X * Y and print Z.
 
 
    Set Z;
    Z=X+Y;
    Z.print();
    Z=X*Y;
    Z.print();
 
 
//  10. Attempt to create Set object U as follows.
//          Set U(-na,a);
 
    Set U(-na,a);
 
//  11. Reset set Z as follows
//          Z.setSet(nb,NULL);
 
 
    Z.setSet(nb,NULL);
 
 
    //cout << "Hello world!" << endl;
    return 0;
}