Необходимо создать третий массив минимально возможного размера, в котором нужно собрать элементы массива A, которые не включаются в массив B
Необходимо создать третий массив минимально возможного размера, в котором нужно собрать элементы массива A, которые не включаются в массив B. Код полностью рабочий,он проходится по всему массиву и если находит одинаковые значения то он добавляет к размеру мин размеру +1, то есть массивА(1,3,4,6) и массивБ(1,5,4,1) он должен вывести массивС(1,4) но он выводит: (мусор,1,4); Я понимаю почему это происходит но не понимаю как это исправить(Видел на StackOverflow как другие это решают но как таковых объяснений не заметил).Используется пузырьковая сортировка,лишь базовые библиотеки
int sizeA, sizeB;
int minSize = 0;
cout << "Введите размер первого массива: ";
cin >> sizeA;
cout << "Введите размер второго массива: ";
cin >> sizeB;
int* masA = new int[sizeA];
int* masB = new int[sizeB];
//Этап присвоение значения для masA и masB
for (int i = 0; i < sizeA; i++) {
masA[i] = rand() % 10;
}
for (int i = 0; i < sizeB; i++) {
masB[i] = rand() % 10;
}
//Сортируем массив
sort(masA, sizeA);
sort(masB, sizeB);
//Выводим отсортированный массив
cout << "Отсортированный массив A: ";
for (int i = 0; i < sizeA; i++) {
cout << masA[i] << " ";
}
cout << endl;
cout << "Отсортированный массив B: ";
for (int i = 0; i < sizeB; i++) {
cout << masB[i] << " ";
}
cout << endl;
//Узнаём размер 3 минимального массива
for (int i = 0; i < sizeA; i++) {
for (int j = 0; j < sizeB; j++) {
if (masA[i] == masB[j]) {
minSize++;
}
}
}
//Новый массив с минимальным размером
int* masC = new int[minSize];
for (int i = 0; i < sizeA; i++) {
for (int j = 0; j < sizeB; j++) {
if (masA[i] == masB[j]) {
masC[i] = masA[i];
}
}
}
for (int i = 0; i < minSize; i++) {
cout << masC[i] << " ";
}
delete[]masA;
delete[]masB;
delete[]masC;
Ответы (1 шт):
Вот это
for (int i = 0; i < sizeA; i++) {
for (int j = 0; j < sizeB; j++) {
if (masA[i] == masB[j]) {
masC[i] = masA[i];
}
}
}
попробуйте переписать как
for (int k = 0, i = 0; i < sizeA; i++) {
for (int j = 0; j < sizeB; j++) {
if (masA[i] == masB[j]) {
masC[k++] = masA[i];
}
}
}
Ну, т.е начать писать в массив C с самого начала и подряд, а не только отдельные элементы массива A.