1

以下は私のコードです:

#include <stdio.h>

void arrays()
{
    int i,n,j;
    printf("Enter the size of the arrays:\n");
    scanf("%d",&n);

    int a1[n];
    int a2[n];
    int intersection[2*n], unions[n];
    printf("Enter elements of the first array:\n");

    for (i = 0; i < n; i++)
    {
        scanf("%d",&a1[i]);
    }
    printf("Enter elements of the second array:\n");
    for (j = 0; j < n; j++)
    {
        scanf("%d",&a2[j]);
    }
    int indexs = -1, indexu = -1;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            unions[++indexu] = a1[j];
        }
    }
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            if(a1[i] == a2[j])
            {
                intersection[++indexs] = a2[j];
            }
            else
            {
                unions[++indexu] = a2[j];
            }
        }
    }

    printf("Intersection:\n");
    printf("Union:\n");
    for(i = 0; i < indexs; i++)
        printf("%d",intersection[i]);
    for (j = 0; j < indexu; j++)
        printf("%d" ,unions[j]);
}

今、合流点と交差点を探すのに苦労しています。ループを修正しようとしていますが、どこに問題があるのか​​ わかりません。私が行っている方法は、最初の配列と2番目の配列を最初に比較することです。ユニオンは両方の配列のすべての要素を意味するためです。2番目は、重複した番号が最初に交差点に行くことを見つけることです。または、共用体に格納されている要素がない場合。ユニオン配列にも行きます。誰でも助けることができますか?ありがとう

4

1 に答える 1

0

問題の 1 つは、出力部分にあります。

printf("Intersection:\n");
printf("Union:\n");
for(i = 0; i < indexs; i++)
    printf("%d",intersection[i]);
for (j = 0; j < indexu; j++)
    printf("%d" ,unions[j]);

このコード スニペットは、配列の内容を印刷する前にと の両方"Intersection:\n"を印刷します。そのため、交差点が表示されない"Union:\n"と思います。

正しいコードは次のとおりです。

printf("Intersection:\n");
for(i = 0; i <= indexs; i++)
    printf("%d",intersection[i]);
printf("\n");
printf("Union:\n");
for (j = 0; j <= indexu; j++)
    printf("%d" ,unions[j]);
printf("\n");
于 2013-09-24T23:29:46.323 に答える