2集的交集 我在C++中编写了一个求2个集合的交和并的函数。

2集的交集 我在C++中编写了一个求2个集合的交和并的函数。,c++,function,intersection,C++,Function,Intersection,我尝试了以下功能: bool member (int x[10],int s[10]) { bool result=false; for (int i=0; i<10; i++) for (int j=0 ; j<10;j++) if (x[i]==s[j]) result=true; return result; } int intersection(int s1[10],in

我尝试了以下功能:

bool member (int x[10],int s[10])
{
    bool result=false;

    for (int i=0; i<10; i++)
        for (int j=0 ; j<10;j++)
             if (x[i]==s[j])
                 result=true;


    return result;
}
int intersection(int s1[10],int s2[10],int s3[10])
{
    for ( int i=0 ; i<10 ; i++)

    {

        if (member(s1,s2)==true)
            s3[i]=s1[i];
    }

  return 0;
} 
交叉点功能:

bool member (int x[10],int s[10])
{
    bool result=false;

    for (int i=0; i<10; i++)
        for (int j=0 ; j<10;j++)
             if (x[i]==s[j])
                 result=true;


    return result;
}
int intersection(int s1[10],int s2[10],int s3[10])
{
    for ( int i=0 ; i<10 ; i++)

    {

        if (member(s1,s2)==true)
            s3[i]=s1[i];
    }

  return 0;
} 
bool成员(int x[10],int s[10])
{
布尔结果=假;

对于(int i=0;i您在
s3
中复制
s1
,如果
成员(s1,s2)
返回
true
,即如果它是
s1
s2
之间的交叉点,则一次复制一项

您应该以这种方式重写(注意:未测试)

bool成员(int x,int s[10])
{
布尔结果=假;

对于(int j=0;(!result)&(j您可以尝试两组用户输入大小的并集和交集,如下所示:

#include<stdio.h>
#include<malloc.h>
void main()
{
    int *a, *b, *c, *d, n1, n2, i, j, k=0, l=0, flag=0;
    printf("Enter number of elements in A and B : ");
    scanf("%d %d",&n1,&n2);
    a = (int *)malloc(sizeof(int)*n1);
    b = (int *)malloc(sizeof(int)*n2);
    c = (int *)malloc(sizeof(int)*((n1>n2)?n1:n2));
    d = (int *)malloc(sizeof(int)*(n1+n2));

    printf("\nEnter element in set A : ");
    for(i=0;i<n1;i++)
    {
        printf("\nEnter element : ");
        scanf("%d",&a[i]);
    }
    printf("\nEnter elements in set B : ");
    for(i=0;i<n2;i++)
    {
        printf("\nEnter element : ");
        scanf("%d",&b[i]);
    }
    for(i=0;i<n1;i++)
    {
        for(j=0;j<n2;j++)
        {
            if(a[i]==b[j])
            {
                c[l++]=a[i];
                j=0;
                break;
            }
        }
    }
    for(i=0;i<n2;i++)
        d[k++]=a[i];
    for(i=0;i<n1;i++)
    {
        flag=0;
        for(j=0;j<n2;j++)
                                                                                                               {
            if(b[i]==a[j])
            {
                flag=1;
                break;
            }
        }
        if(!flag)
            d[k++]=b[i];
    }
    printf("\n\t A = {");
    for(i=0;i<n1;i++)
    {
        printf("%d",a[i]);
    }
    printf("}");
    printf("\n\t B = {");
    for(i=0;i<n2;i++)
    {
        printf("%d",b[i]);
    }
    printf("}");
    printf("\n\t A U B = {");
    for(i=0;i<k;i++)
    {
        printf("%d",d[i]);
    }
    printf("}");
    printf("\n\t A n B = {");
    for(i=0;i<l;i++)
    {
        printf("%d",c[i]);
    }
    printf("}");
}
#包括
#包括
void main()
{
int*a,*b,*c,*d,n1,n2,i,j,k=0,l=0,flag=0;
printf(“在A和B中输入元素数:”);
scanf(“%d%d”、&n1和&n2);
a=(int*)malloc(sizeof(int)*n1);
b=(int*)malloc(sizeof(int)*n2);
c=(int*)malloc(sizeof(int)*((n1>n2)?n1:n2));
d=(int*)malloc(sizeof(int)*(n1+n2));
printf(“\n集合A中的输入元素:”);

对于(i=0;i)请比“它不工作”更具体。另外,当您使用调试器时,您发现了什么?例如,当我给第一个数组(s1)值{1,3,7,9}(我给其他元素-1)和第二个数组(s2)值{1,3,4,6,9}时,它给了我{1,3,7,9}(正是第一个数组)太好了!在调试器中逐步检查代码。问题是在
成员
函数中给出了错误的答案?还是在
交集
函数构建结果的方式中?我使用交集函数作为结果我的意思是在主函数中我使用了交集(s1、s2、s3)然后我会s3!!!我希望我能理解你的问题:)!为什么?你可以用
std::set\u intersection
-还有
std::set\u union
-