У вас есть внешний доступ, который приводит к неопределенному поведению. Напомним, что индексы в сырых массивах начинаются с ноль , а не с единицы. Следовательно,
int i = 0;
- правильная инициализация индекса, в то время как первый цикл должен быть изменен на
while (i < x) { /* ... */ }
Затем присвоение i
необходимо снова скорректировать до
i = 0;
и две оставшиеся петли до
while (i < x) { /* ... */ }
for (int a = 0; a < x; a++) { /* ... */ }
В качестве примечания вы используете массивы переменной длины (arr
и arr2
), что является нестандартным C ++ (см. этот поток для получения дополнительной информации). Предпочитайте std::vector
для простого контейнера с зависимым от времени выполнения размером.