Элементы массива самопроизвольно изменяются

столкнулся с такой проблемой: Создаю массив и заполняю его рандомными десятью значениями. После этого этот массив никак не изменяю, а использую для создания второго и третьего массива. Но при создании третьего массива первые два элемента заменяются на рандомные значения.

Полный код программы:

#include <iostream>
using namespace std;

int main() {
    //Создание и вывод массива на экран
    cout << "Input n: ";
    int n;
    cin >> n;
    cout << endl;
    int arr[n];
    cout << "Your array: ";
    for(int i = 0; i < n; i++)
    {
        arr[i] = rand(); //Заполнение массива размера n  случайными числами
        cout << arr[i] << ", ";
    }
    cout << endl; //Вывод элементов массива на экран

    //Удаление элементов массива
    int N, K;
    cout << "Input N and K:" << endl;
    cout << "N: ";
    cin >> N;
    cout << endl;
    cout << "K: ";
    cin >> K;
    cout << endl;
    int arr2[n - N];
    for(int i = 0; i <= K; i++)   // Добавление в новый массив элементов до К
    {
        arr2[i] = arr[i];
    }
    for(int i = K; i < n; i++)  //Добавление во второй массив элементов после   N+K
    {
        arr2[i]=arr[i + N];
    }
    cout << "Your new array: ";
    for(int i = 0; i < n-N; i++) //Вывод нового массива на экран
    {
        cout << arr2[i] << ", ";
    }
    cout << endl;

     //Добавление элементов в массив
    int arr3[n + K];
    for(int i = 0; i < K; i++) //Генерация первых К элементов
    {
        arr3[i] = rand();
    }
    for(int i = 0; i < n; i++) //Заполнение оставшихся элеменов элементами оригинального массива
    {
        arr3[i+ K] = arr[i];
    }
    cout << "Your third array: "; //Вывод третьего массива
    for(int i = 0; i < n+K; i++)
    {
        cout << arr3[i] << ", ";
    }

    return 0;
}

Частный случай вывода:

Изначально:

1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421

В итоге:

1774867093
21894
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421

Ответы (1 шт):

Автор решения: lstchk

Как указали в комментариях, нужно иначе объявить массив, тогда все работает правильно. Не

int arr[n];

,a

int *arr = new int[n];
→ Ссылка