m0_74128289 2023-03-26 11:08 采纳率: 87.5%
浏览 19
已结题

怎末改能让交集和差集输出

怎末改能让交集和差集输出


#include<iostream>
#include<cstring>
using namespace std;
class SET{
private:
    int allnum[100];
    int length;
public:
    SET(){
        this->length=0;
        memset(this->allnum,0,sizeof(allnum));
        cout<<"Default constructo"<<endl;
    }

    SET(int n){
        cout<<"Ordinary constructor"<<endl;
    }

    SET(SET &s){
        cout<<"Copy constructor"<<endl;
    }

    ~SET(){
        cout<<"Destruct the constructor"<<endl;
    }

    void getnum(){
        char ch='y';
        cout<<"Enter the elements of the collection"<<endl;
        while(ch!='\n'){
            cin>>allnum[length];
            ch=getchar();
            length++;
        }
        cout<<"Input completed"<<endl;
    }

    void shownum(){
        cout<<"Prints all the elements in the array"<<endl;
        for(int i=0;i<length;i++){
            cout<<allnum[i]<<" ";
        }
        cout<<endl<<"Complete the output"<<endl;
    }

    void addnum(int num){
    int flag=0;
        for(int i=0;i<length;i++){
            if(allnum[i]==num){
                flag=1;
                break;
            }
        }
        if(flag==0){
            allnum[length]=num;
            length++;
        }
    }
    void delnum(int num){
        int n,flag=0;
        for(n=0;n<length;n++){
            if(allnum[n]==num){
                flag=1;
                break;
            }
        }
        if(flag==1){
            for(int i=n;i<length-1;i++){
            allnum[i]=allnum[i+1];
            }
             length--;
        }
       else{
        cout<<"There is no element"<<endl;
       }

    }
    SET bingji(SET &s2){
        SET s;
        for(int i=0;i<this->length;i++){
            s.allnum[i]=this->allnum[i];
            s.length=this->length;
        }
        for(int i=0;i<s2.length;i++){
            s.addnum(s2.allnum[i]);
        }
        return s;
    }
    SET jiaoji(SET &s2){
        SET s;
        for(int i=0;i<this->length;i++){
            for(int j=0;j<s2.length;j++){
                if(this->allnum[i]==s2.allnum[j]){
                    s.allnum[s.length]==s2.allnum[j];
                    s.length++;
                }
            }
        }
        return s;
    }
    SET chaji(SET &s2)
    {
        int flag=0;
        SET s,s1;
        s1=this->bingji(s2);
        for(int i=0;i<this->length;i++)
        {
            flag=0;
            for(int j=0;j<s1.length;j++)
            {
                if(this->allnum[i]==s1.allnum[j])
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0){
                s.allnum[s.length]=this->allnum[i];
                s.length++;
            }
        }
        return s;
    }
};
int main()
{
    SET s1,s2,s3;
    SET s;
    int num;
    cout<<"1.创建集合及集合的初始化"<<endl;
    s1.getnum();
    s2.getnum();
    s3.getnum();
    cout<<"4.显示set中的所有元素"<<endl;
    s1.shownum();
    s2.shownum();
    s3.shownum();
    cout<<endl;
    cout<<"2.向集合s1中添加一个元素"<<endl;
    cout<<"Enter an integer to add"<<endl;
    cin>>num;
    s1.addnum(num);
    s1.shownum();
    cout<<"3.从集合s3中删除一个元素"<<endl;
    cout<<"Enter an integer to add"<<endl;
    cin>>num;
    s3.delnum(num);
    s3.shownum();
    cout<<"5.计算s1和s2的交集"<<endl;
    s=s1.jiaoji(s2);
    s.shownum();
    cout<<"6.计算s1和s2的并集"<<endl;
    s=s1.bingji(s2);
    s.shownum();
    cout<<"7.计算s1和s2的差集"<<endl;
    s=s1.chaji(s2);
    s.shownum();
}

  • 写回答

1条回答 默认 最新

  • IT_service_mesh 2023-03-26 11:12
    关注

    参考GPT和自己的思路:如果想要让交集和差集输出,只需要在计算交集和差集的函数中添加输出语句即可。

    例如,在计算交集的函数jiaoji中,可以添加如下输出语句:

    cout<<"The intersection of two sets is: ";
    

    同理,在计算差集的函数chaji中,也可以添加输出语句:

    cout<<"The difference of two sets is: ";
    

    这样,在调用这些函数时就会在输出集合元素前有标识性的语句,让输出更加清晰明了。

    完整的jiaoji和chaji函数分别如下:

    SET jiaoji(SET &s2){
        SET s;
        for(int i=0;i<this->length;i++){
            for(int j=0;j<s2.length;j++){
                if(this->allnum[i]==s2.allnum[j]){
                    s.allnum[s.length]==s2.allnum[j];
                    s.length++;
                }
            }
        }
        cout<<"The intersection of two sets is: ";
        return s;
    }
    
    SET chaji(SET &s2)
    {
        int flag=0;
        SET s,s1;
        s1=this->bingji(s2);
        for(int i=0;i<this->length;i++)
        {
            flag=0;
            for(int j=0;j<s1.length;j++)
            {
                if(this->allnum[i]==s1.allnum[j])
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0){
                s.allnum[s.length]=this->allnum[i];
                s.length++;
            }
        }
        cout<<"The difference of two sets is: ";
        return s;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月26日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)