• C++面向对象编程题 第12题


    12.定义一个集合类 SET,处理整型数组。通过成员函数重载运算符“==”,判断一个数是否属于集合; 通过友元重载运算符“==”,判断两个集合是否相同,即集合中的所有元素相同,但顺序可不同。

    具体要求如下:

    1. 私有数据成员:
    • int *a; //数据成员,存放整型数组,集合为数组中的所有元素
    • int len; //数据成员, 数组的长度
    1. 公有成员函数:
    • SET(int *p,int n):构造函数,以形参初始化数据成员;
    • int operator = =(int m):重载函数,判断m是否属于当前对象所属的集合;
    • friend int operator = =(SET &s1, SET &s2):重载函数,判断s1和s2所属的集合是否相同,可在
      该函数中调用类的其他函数;
    • void print():输出集合;
    • ~SET():析构函数,释放动态内存。
    1. 对所定义的类进行测试。以集合a{1,2,3,4,5}、集合b{1,2,3,4,5}、集合c{1,2,3,4,5,6}、集合d{1,3,5,7,9}
      为测试数据,判断a与b、 a与c、 a与d之间是否相同。
    #include
    using namespace std;
    class SET{
        int *a,len;
    public:
        SET(int *p,int n);
        int operator==(int m);
        friend int operator==(SET &s1,SET &s2);
        void print();
        ~SET();
    };
    SET::SET(int *p,int n){
        len = n;
        a = new int[n];
        for(int i=0;i<n;i++){
            a[i]=p[i];
        }
    }
    int SET::operator==(int m){
        for(int i=0;i<len;i++){
            if(m==a[i])return 1;
        }
        return 0;
    }
    int operator==(SET &s1,SET &s2){
        if(s1.len!=s2.len)return 0;
        for(int i=0;i<s1.len;i++){
            if(!(s1==s2.a[i]))return 0;
        }
        return 1;
    }
    void SET::print(){
        for(int i=0;i<len;i++){
            cout<<a[i]<<' ';
        }
        cout<<endl;
    }
    SET::~SET(){
        if(a)delete[]a;
    }
    int main(){
    	int a[]={1,2,3,4,5},b[]={1,2,3,4,5},c[]={1,2,3,4,5,6},d[]={1,3,5,7,9};
    	SET s1(a,5),s2(b,5),s3(c,6),s4(d,5);
    	cout<<"a:";s1.print();
    	cout<<"b:";s2.print();
    	cout<<"c:";s3.print();
    	cout<<"d:";s4.print();
    	if(s1==s2)cout<<"a==b"<<endl;
    	else cout<<"a!=b"<<endl;
    	if(s1==s3)cout<<"a==c"<<endl;
    	else cout<<"a!=c"<<endl;
    	if(s1==s4)cout<<"a==d"<<endl;
    	else cout<<"a!=d"<<endl;
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
  • 相关阅读:
    求解最大公约数(两种)
    如何完善文件传输审批流程,降低企业文件安全风险?
    MySQL 中的锁类型有哪些
    Python学习之编写学生信息管理系统
    分享一个AI工程师从入门到精通学习路径
    十、Spring Boot 安全管理(3)
    矩阵分析与应用-5.3-共轭梯度与无约束最优化
    会员题-力扣408-有效单词缩写
    ROS学习笔记08、机器人导航仿真(slam、map_server、amcl、move_base与导航消息介绍)
    Flask数据库操作-Flask-SQLAlchemy
  • 原文地址:https://blog.csdn.net/xskukuku/article/details/127743424