Я нашел и исправил ошибку в программе, которую мне нужно было сделать для назначения.Но я не понимаю, почему возникает ошибка, и я хотел бы понять, что происходит для будущего использования.
Программа запрашивает у пользователя размер 2 массивов int, а затем предлагает пользователю ввести значенияэти массивы будут держать.Затем он запрашивает у пользователя диапазон индексов из массива 1 для добавления значений в массив 2 до заданной позиции.Затем генерируются еще 2 массива, чтобы показать новый массив 2 с новыми значениями, добавленными из массива один.
#include <stdio.h>
void fillArray(int x[], int size);
int main()
{
int size1, size2, start, end, position;
//getting input and creating array one
printf("How big is array one?: ");
scanf("%d", &size1);
int inputArray1[size1];
printf("Please enter the numbers for array one: ");
fillArray(inputArray1, size1);
//getting input and creating array two
printf("How big is array two?: ");
scanf("%d",&size2);
int inputArray2[size2];
printf("Please enter the numbers for array two: ");
fillArray(inputArray2, size2);
printf("Enter the start and end index of array one to be removed: ");
scanf("%d %d", &start, &end);
printf("Enter the position of array two to be added before: ");
scanf("%d", &position);
int size3 = ((end - start) + size2+1), size4 = (size1 - (end - start));
int outputArray2[size3], kIterator=0;
for(int i=0; i<size3; i++){
if(i == position){
for(int j=start; j<=end; j++){
outputArray2[i] = inputArray1[j];
i++;
}
}else{
//HERE IS WHERE I FIXED THE ERROR
outputArray2[i] = inputArray2[kIterator];
kIterator++;
}
}
for(int i=0; i<size3; i++){
printf("%d ", outputArray2[i]);
}
return 0;
}
//Function to fill an array with user inputs
void fillArray(int x[], int size){
for(int i=0; i<size; i++)
scanf("%d", &x[i]);
}
Насколько велик массив один ?: 8
Пожалуйста, введите числа для массива один: 912 8 41 38 12 67 49
Насколько велик массив два?: 3
Пожалуйста, введите числа для массива два: 11 27 6
Введите начальный и конечный индекс удаляемого массива один: 2 5
Введите позицию массива два, который будет добавлен ранее: 1
11 8 41 38 12 32767 27
Почему происходит этот вывод?Вывод должен быть: 11 8 41 38 12 27 6
Когда я удаляю блок else, но оставляю код, похожий на:
for(int i=0; i<size3; i++){
if(i == position){
for(int j=start; j<=end; j++){
outputArray2[i] = inputArray1[j];
i++;
}
}
//HERE IS WHERE I FIXED THE ERROR
outputArray2[i] = inputArray2[kIterator];
kIterator++;
}
Внезапно вывод верный, и я не понимаю, чтобольшое количество.Почему это?