2015-04-15 2 views
0

Я новичок в программировании на языке C. Я пытаюсь выяснить, как сравнить 2 массива и распечатать, какие числа повторяются в обоих из них. Это мой код:номера печати, которые находятся в обоих массивах

const int SIZE = 5; 
int firstArray[SIZE]; 
int secondArray[SIZE]; 
int i,j; 

for(i=0; i<SIZE; ++i) { 
    printf("enter a number: "); 
    scanf("%d", &firstArray[i]); 
} 

for(i=0; i<SIZE; ++i) { 
    printf("%d, ", firstArray[i]); 
} 
printf("into array 1\n"); 
for(j=0; j<SIZE; ++j) { 
    printf("enter a number: "); 
    scanf("%d", &secondArray[j]); 
} 

for(j=0; j<SIZE; ++j){ 
    printf("%d, ", secondArray[j]); 
} 
printf("into array 2\n"); 

for (i = 0; i<SIZE; ++i){ 
    for(j=i+1; j<SIZE; ++j){ 
     if(firstArray[i] == secondArray[j]){ 
      printf("%d", firstArray[i]); 

    } 
} 

Пример ввода:

array 1: 1, 2, 3, 4, 5 
array 2: 3, 4, 5, 6, 7 

Ожидаемый результат:

1, 2, 3, 4, 5 into array 1 
3, 4, 5, 6, 7 into array 2 
3 has been entered in both array 
4 has been entered in both array 
5 has been entered in both array 

Мой код только позволяет мне сделать "в массив" выход. Как я достичь:

3 has been entered in both array 
4 has been entered in both array 
5 has been entered in both array 
+0

Для каждого номера в массиве 1 проверьте, также ли он находится в массиве 2, и если да, тогда печать «x была введена в оба массива», –

ответ

2

Измените свой окончательный цикл для:

for (i = 0; i<SIZE; ++i) 
{ 
    for(j = 0; j<SIZE; ++j) 
    { 
     if(firstArray[i] == secondArray[j]) 
      printf("%d has been entered in both array\n", firstArray[i]); 

    } 
} 

Примечание: этот код будет повторять сообщение (например, 4 has been entered in both array) более чем один раз, если 4 присутствует, по меньшей мере, один массив более чем 1 раз.

1
for (i = 0; i<SIZE; ++i){ 
    for(j = 0; j<SIZE; ++j){ 
    if(firstArray[i] == secondArray[j]){ 
      printf("%d has been entered in both array\n", firstArray[i]); 
    } 
    } 
} 

Здесь, во втором цикле вам требуется, необходимо изменить j=i+1 к j=0, так как вы должны проверить все значения в обоих массивах. Кроме того, измените оператор printf в соответствии с ожидаемым результатом.

Ideone ссылка: http://ideone.com/YthNkx

1

Попробуйте это для последней части:

for (i = 0; i<SIZE; ++i){ 
    for(j=0; j<SIZE; ++j){ 
     if(firstArray[i] == secondArray[j]){ 
      printf("%d", firstArray[i]); 
     } 
    } 
} 

Вы должны сравнить каждое число в первом массиве с каждым номером во втором массиве. Надеюсь, поможет!

Смежные вопросы