Не могу получить номера моего массива для сравнения с другим набором - PullRequest
1 голос
/ 01 июля 2010

У меня есть два массива, которые содержат 5 наборов случайных чисел.

Сначала я отображаю список всех чисел в первом массиве; затем мне нужно добавить в этот список любое число, которого нет в первом массиве, и отобразить каждое из них. Для этого я использую другой массив для отображения уникальных значений. У меня уже есть функция, которая отображает текущий массив.

Вот код, где у меня проблема:

//SIZE is defined in the beginning as 5.

printArray(array1);
 int i, j;
 //For each number in array1, compare each number in array2 to it.
 for(j=0; j<SIZE; j++)
 {
  for(i=0; i<SIZE; i++)
     {
    if(array2[j] != array1[i])//?
    {
     arraySum[j] = array2[j];
     std::cout << arraySum[j] << std::endl;
     break;
    }

     }
 }
 //printArray(arraySum);

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Я считаю, что это то, что вы ищете ...

#include <iostream>
int main(){
int i, j, count;
int SIZE = 5;
int array1[] = {1,3,4,5,7};
int array2[] = {0,9,14,5,18};
int arraySum[5];
//For each number in array1, compare each number in array2 to it.
for(j=0; j<SIZE; j++)
{
    count = 0;
    for(i=0; i<SIZE; i++)
    {
        if(array2[j] != array1[i])
        {
        count++;        
        }
    }
    if(count >= 5){
        arraySum[j] = array2[j];
        std::cout << arraySum[j] << std::endl;
    }
}
return 0;
}

Надеюсь, это поможет.

1 голос
/ 01 июля 2010

Звучит так, будто вы ищете std::set_difference. Пример:

std::set_difference(array2, array2 + SIZE, array1, array1 + SIZE,
    std::ostream_iterator<int>(std::cout, "\n"));

Обратите внимание, что array1 и array2 должны быть отсортированы по set_difference .... при необходимости вы можете использовать std::sort для входных массивов.

Вам понадобится #include <algorithm> для std::set_difference и вам нужно #include <iterator> для std::ostream_iterator.

РЕДАКТИРОВАТЬ: если вы хотите вывод, аналогичный записи Wheaties, вы можете использовать std::set_union вместо std::set_difference:

std::set_union(array1, array1 + SIZE, array2, array2 + SIZE,
    std::ostream_iterator<int>(std::cout, "\n"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...