Страницы

Поиск по вопросам

четверг, 13 декабря 2018 г.

Объединить два массива в один, с не общими элементами без повтора

Необходимо два массива объединить в один и оставить в нем только не общие элементы. Например arr1 {1,2,3,4} + arr2{1,1,5,6}, результат arr3 {3,4,6}.
const int SIZE1 = 8; const int SIZE2 = 5; int arr1[SIZE1] = { 0 }; int arr2[SIZE2] = { 0 }; cout << "First array
"; for (int i = 0; i < SIZE1; i++){ arr1[i] = rand() % 20; cout << arr1[i] << '\t'; }
cout << "
Second array
"; for (int i = 0; i < SIZE2; i++){ arr2[i] = rand() % 20; cout << arr2[i] << '\t'; } cout << endl; const int SIZE3 = SIZE1 + SIZE2; int arr3[SIZE3] = { 0 }; cout << "Third array
"; for (int i = 0; i < SIZE3; i++){ arr3[i] = arr1[i]; if (i >= SIZE1) arr3[i] = arr2[i-SIZE1]; cout << arr3[i] << '\t'; } cout << endl; const int SIZE4 = SIZE3; int arr4[SIZE4] = { 0 }; int size4 = 0; for (int i = 0; i < SIZE4; i++){ for (int j = 0; j < SIZE4; j++){ if (arr3[i] == arr3[j]&&i!=j) break; else if (arr3[i] != arr3[j]&&j"; for (int i = 0; i < size4; i++){ cout << arr4[i] << '\t'; } cout << endl;
}


Ответ

Так вот, решение которое я реализовала:
const int SIZE1 = 5; const int SIZE2 = 7; int arr1[SIZE1] = { 0 }; int arr2[SIZE2] = { 0 }; for (int i = 0; i < SIZE1; i++) cout << (arr1[i] = rand() % 10) << "\t"; cout << endl; for (int i = 0; i < SIZE2; i++) cout << (arr2[i] = rand() % 10) << "\t"; cout << endl;

const int SIZE3 = SIZE2+SIZE1;
int arr3[SIZE3] = { 0 }; int size3 = 0; //сравниваем 1 со вторым, разницу записыв в 3 for (int i = 0; i < SIZE1; i++) { for (int j = 0; j < SIZE2; j++) { if (arr1[i] == arr2[j]) { break; } else if (arr1[i] != arr2[j]) { bool exist = false; for (int k = 0; k < size3; k++) { if (arr1[i] == arr3[k]) { exist = true; break; } } if (exist == false&&j==SIZE2-1) { arr3[size3] = arr1[i]; size3++; break; } } } }
//сравниваем 2 массив с первым, разницу записываем в 3 с места где закончилась запись сравнения 1 и 2 for (int i = 0; i < SIZE2; i++) { for (int j = 0; j < SIZE1; j++) { if (arr2[i] == arr1[j]) { break; } else if (arr2[i] != arr1[j]) { bool exist = false; for (int k = 0; k < size3; k++) { if (arr2[i] == arr3[size3-k]) { exist = true; break; } } if (exist == false && j == SIZE1 - 1) { arr3[size3] = arr2[i]; size3++; break; } } } }
cout << "Array 3
"; for (int i = 0; i < size3; i++) { cout << arr3[i] << "\t"; }
Всем участника спасибо за помощь!

Комментариев нет:

Отправить комментарий