2 ji1812062521 ji1812062521 于 2016.02.19 02:04 提问

编写程序,求两个整数集合的并集。。。

编写程序,求两个整数集合的并集。。。能不能把下面这个修改一下??如果可以,再写一个完整的程序也可以图片图片

4个回答

caozhy
caozhy   Ds   Rxr 2016.02.19 04:01
已采纳

这是按照你的思路写的(假设a b两个数组内没有重复的数字)

#include <iostream>
#include <stdlib.h>
using namespace std;

void arrunion(int a[], int b[], int r[], int an, int bn, int * n)
{
    *n = an;
    memcpy(r, a, an * sizeof(int));
    for (int i = 0; i < bn; i++)
    {
        bool f = true;
        for (int j = 0; j < an; j++)
        {
            if (r[j] == b[i]) { f = false; break; }
        }
        if (f) { r[*n] = b[i]; *n = *n + 1; }
    }
}

int main()
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    int b[10] = {3,4,5,6,7,8,10,11,8,3};
    int c[20];
    int n = 0;
    arrunion(a, b, c, 10, 10, &n);
    for (int i = 0; i < n; i++)
        cout << c[i] << " ";
    cout << endl;
    return 0;
} 
caozhy
caozhy   Ds   Rxr 2016.02.19 03:03

这种问题不要贴图,请给出程序,总不至于让人帮你再敲一遍吧。

ji1812062521
ji1812062521
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.19 03:45

我写了一个另外的,先连接两个数组,排序,然后去掉重复的。

#include <iostream>
#include <stdlib.h>
using namespace std;

int cmp(const void * a, const void * b)
{
    return (*(int *)a) - (*(int *)b);
}

void arrunion(int a[], int b[], int r[], int an, int bn, int * n)
{
    int dif = 0;
    memcpy(r, a, an * sizeof(int));
    memcpy(r + an, b, bn * sizeof(int));
    qsort(r, an + bn, sizeof(int), cmp);
    for (int i = 1; i < (an + bn); i++)
    {
        if (r[i] == r[i - 1 - dif])
        {
            dif++;
        }
        else
        {
            r[i - dif] = r[i];
        }
    }
    *n = an + bn - dif;
}

int main()
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    int b[10] = {3,4,5,6,7,8,10,11,8,3};
    int c[20];
    int n = 0;
    arrunion(a, b, c, 10, 10, &n);
    for (int i = 0; i < n; i++)
        cout << c[i] << " ";
    cout << endl;
    return 0;
}

1 2 3 4 5 6 7 8 9 10 11
Press any key to continue

dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.02.23 15:21

以后出题的时候把代码复制粘贴出来,不要贴截图

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
编写程序实现两个集合的交、并集
编写程序实现两个集合的交、并集 #include <stdio.h> #define N 100int main() { int a[N],b[N],c[N],d[N],e[N],f[N]; int m,n,i,j; int k=1,x=1,y=1; int flag; printf("请确定集合A中的个数:\n"); scanf("%d",&m);
有两个有序整数集合a和b,写一个函数找出它们的交集?
方法一:  private static Set setMethod(int[] a,int[] b){ Set set = new HashSet(); Set set2 = new HashSet(); for(int i=0; i<a.length; i++) { set.add(a[i]);
java求两个集合的交集和并集
求连个集合的交集: import java.util.ArrayList; import java.util.List; public class TestCollection { public static void main(String[] args) { List strList = new ArrayList(); List strList2 = new ArrayLis
A、B两个整数集合的交集
两个整数集合的交集
两个集合取并集
两个集合取并集 public static Set unionSet(Set setA, Set setB) { Set unionSet = new HashSet(); Iterator iterA = setA.iterator(); unionSet.addAll(setB); while (iterA.hasNext()) { Object tempI
求两个集合的交集、差集和并集
#include <stdio.h> #include <stdlib.h>typedef struct node{ char data; struct node * next; }Linklist;//尾插入法 Linklist * createLinklist2(){ char x; Linklist * head,* p,* q; head = (Lin
线性表【项目 - 求集合并集】
/* 注意:   1.除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行测试和演示; 2.可以充分利用前面建好的算法库[点击…],在程序头部直接加 #include<list.h>即可(工程中最普遍的方法,建议采纳); 3.也可以将实现算法中需要的线性表的基本运算对应的函数,与自己设计的所有程序放在同一个文件中。 */
两个整数集合A和B,求其交集
两个整数集合A和B,求其交集。   1. 读取整数集合A中的整数,将读到的整数插入到map中,并将对应的值设为1。   2. 读取整数集合B中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2   通过更改map中的值,避免了将同样的值输出两次。 下面为源码: #include #include using namespace std;
java集合操作-----求两个集合的交集和并集
<br />java求两个集合的交集和并集<br /> <br />        java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法。今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例)<br /> <br />        求连个集合的交集:<br />import java.util.ArrayList; import java.util.List; public class TestCollection { public stati
输入两个闭区间,求其交集,并集和差集(C++):
输入两个闭区间,求其交集,并集和差集(C++) #includeusing namespace std; int main(){ int a,b; int c,d; cout>a>>b; cout>c>>d; if(a>b||c>d) { cout } else { if(d { cout空集" cout并集为:" cout } else