0

私はこのコードを持っています...ユーザーから7つの数字を取得し、それを配列番号1に入れる関数用....そして2番目に乱数を作成し、それらを配列番号2に入れます....共通の値 ...(同じ場所だけでなく、たとえば: ar1[1]==ar2[1] の場合だけでなく、共通の値があるかどうかすべての場所をチェックする)...そして異なる値を 3 番目の配列に入れます...3 番目の配列を作成し、その中に一般的ではない値を入れます...これが私のコードです:

 //includes
# include  <stdio.h>
# include  <conio.h>
# include  <stdlib.h>
# include  <time.h>

//define
#define N 7
//prototype
void randomArray(int maxVal,int ar2[]);

int main()
{
//variables/arrays
int ar1[N],ar2[N],ar3[N],i,z,t,temp,maxVal,counter;

printf("Please Enter %d numbers: ",N);
for(i=0;i<7;i++)
{
    scanf("%d",&ar1[i]);
}

while(1)
{
printf("Please enter a max value: ");
scanf("%d",&maxVal);

if(maxVal>0)
    break;
}
randomArray(maxVal,ar2);


getch();
return 0;
}

//randomArray
void randomArray(int maxVal,int ar2[])
{
    int i;
    for(i=0;i<N;i++)
    {
     /* get random value between minVal and maxVal */
        ar2[i] = (rand() % (maxVal+1 - 1)) + 1;
    }
}
4

1 に答える 1

1

これが、単純な力ずくのアプローチです。最初に、配列 1 の各要素を配列 2 のすべての要素と比較し、配列 2 にない場合は格納します。次に、配列 2 についても同じことを行います。次に、配列 3 を出力します。

注: 一致がない場合は、配列 3 のサイズを N*2 に変更する必要があります。また、最初に配列 3 のすべての要素を 0 に設定して、非結果としてマークします。または、配列 3 の長さを追跡します。

int ar3[N*2] = {0};
int index = 0;
//Check 1st array
printf("Array 1:\t");
for (int i = 0; i < N; i++) {
    bool in_array = false;
    for (int k = 0; k < N; k++) {
        if (ar1[i] == ar2[k]) {
            in_array = true;
                    break;
        }
    }
    if (!in_array) {
        ar3[index++] = ar1[i];
    }
    printf(" %d", ar1[i]);
}
//Check 2nd array
printf("\r\nArray 2:\t");
for (int i = 0; i < N; i++) {
    bool in_array = false;
    for (int k = 0; k < N; k++) {
        if (ar2[i] == ar1[k]) {
            in_array = true;
                    break;
        }
    }
    if (!in_array) {
        ar3[index++] = ar2[i];
    }
    printf(" %d", ar2[i]);
}

// Print result
printf("\r\nUnique:\t");
for (int i = 0, j = 0; i < N*2; i++) {
    if (0 == ar3[i]) {
        break;
    }
    printf(" %d", ar3[i]);
}

これがうまくいく場合は、正しい答えとして受け入れてください。

于 2012-12-11T13:37:01.030 に答える