Сформировать массив, состоящий из тех элементов, которые присутствуют только в одном из массивов
Пробовал по разному, но всегда на выходе в 3-ем массиве был мусор.
Вот исходник:
int main() {
setlocale(0, "");
int size1;
int size2;
cout << "Введите размерность первого массива: ";
cin >> size1;
cout << "Введите размерность второго массива: ";
cin >> size2;
int* arr1 = new int[size1];
int* arr2 = new int[size2];
cout << endl;
for (int i = 0; i < size1; i++) {
cout << "Введите " << i + 1 << " элемент первого массива: ";
cin >> arr1[i];
}
cout << endl;
for (int i = 0; i < size2; i++) {
cout << "Введите " << i + 1 << " элемент второго массива: ";
cin >> arr2[i];
}
cout << "\nПервый массив: ";
for (int i = 0; i < size1; i++) {
cout << arr1[i] << " ";
}
cout << "\nВторой массив: ";
for (int i = 0; i < size2; i++) {
cout << arr2[i] << " ";
}
return 0;
}
Ответы (1 шт):
Автор решения: ashes
→ Ссылка
Если я Вас правильно понял, то задача состоит в том, чтобы найти элементы первого массива, которых нету во втором массиве, и наоборот. Для удобства будем использовать вектор:
vector <int> answer;
int n;
int size = 0;
for (int i = 0; i < size1; i++) {
n = 0;
for (int x = 0; x < size2; x++) {
if (arr1[i] != arr2[x]) n += 1;
}
if (n == size2) {
size += 1;
answer.resize(size);
answer[size - 1] = arr1[i];
}
}
Этот кусок кода проверяет на наличие идентичных элементов первого массива во втором. Теперь необходимо сделать тоже самое, но для проверки идентичности второго массива:
for (int i = 0; i < size2; i++) {
n = 0;
for (int x = 0; x < size1; x++) {
if (arr2[i] != arr1[x]) n += 1;
}
if (n == size1) {
size += 1;
answer.resize(size);
answer[size - 1] = arr2[i];
}
}
Полученный вектор answer содержит искомые элементы. P.s. знаю, что можно было обойтись и без обратного действия, но в такой простой задаче легче просто пойти "в лоб", как сделал я.