Цель моей программы на C состоит в том, чтобы взять два массива (оба состоят из уникальных чисел) и объединить их в новый массив, исключив любые числа, которые являются одинаковыми между ними.Однако, когда я пытаюсь объединить два, вместо этого он печатает обратно оба массива вместе, не удаляя дубликаты.
Моя программа создает «array_C», сначала добавляя элементы из «array_A».После этого он проверяет наличие дубликатов между «array_B» и «array_C» с помощью переменной счетчика.Для каждого значения в «array_C», которое проверяет цикл for, если значение «array_B» не равно значению в «array_C», счетчик уменьшается на 1. Если после проверки всех значений в «array_C»,counter = <0, это означает, что в «array_C» нет дубликатов этого значения, и его следует добавить в конец «array_C».Я отслеживаю это, используя переменную "position". </p>
//Creation of array_C
int length_C = length_A + length_B;
int array_C[length_C];
//Copying array_A to array_C
for (i = 0; i < length_A; i++) {
array_C[i] = array_A[i];
}
//Checking array_C against array_B for duplicates
counter = length_A;
int position = length_A;
for (i = 0; i < length_B; i++) {
for (j = 0; j < length_C; j++) {
if (array_B[i] != array_C[j]) {
counter--;
} else {
counter++;
}
}
//this is the position tracker to add new value in array_C
if (counter <= 0) {
array_C[position] = array_B[i];
position++;
}
}
Если я введу это:
Enter the length of array 1: 6
Enter the elements of the array: 1 2 3 4 5 6
Enter the length of array 2: 6
Enter the elements of the array: 3 4 5 6 7 8
Я ожидаю, что результаты должны выглядеть следующим образом:
Here is the merged array:
1 2 3 4 5 6 7 8
Но вместо этого это выглядит так:
1 2 3 4 5 6 3 4 5 6 7 8
Так что, очевидно, что-то идет не так, и он не понимает, что он должен добавлять только переменные, которые не являются дубликатами.