Другие языки программирования и технологии

Вылазит ошибка в программе с++. Помогите пожалуйста

Задача такая: Нужно создать массив (размер задаётся с клавиатуры). Потом вводится число k. И нужно заменить все элементы массива, которые меньше k, числом k. Вроде программу сделал, а выдаёт ошибку. Вот код, помогите пожалуйста!!!
#include
#include
using namespace std;

int* arr_new(int*, int, int);

int main()
{
setlocale(LC_ALL, "rus");
srand(time(NULL));

int n, k;

cout << "Введите размерность массива n:";
cin >> n;

int* arr = new int(n);

for (int i = 0; i < n; i++)
{
arr[i] = rand();
cout << arr[i] << " ";
}

cout << endl;

cout << "Введите число k:";
cin >> k;

arr = arr_new(arr, n, k);

for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}

delete[] arr;

return 0;
}

int* arr_new(int* arr, int n, int k)
{
for (int i = 0; i < n; i++)
{
if (arr[i] < k)
{
arr[i] = k;
}
}

return arr;
}
#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
int* create(const size_t n) {
return new(nothrow) int[n];
}
void fill_r(int* vec, const size_t n, int l, int r) {
if (r < l) swap(l, r);
uniform_int_distribution<int> uid(l, r);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < n; ++i) vec[i] = uid(gen);
}
void show(int* vec, const size_t n, const streamsize w = 5U) {
for (auto i = 0U; i < n; ++i) cout << setw(w) << vec[i];
cout.put('\n');
}
void replace(int* vec, const size_t n, int k) {
for (auto i = 0U; i < n; ++i) if (k > vec[i]) vec[i] = k;
}
int* destroy(int* vec) {
if (vec != nullptr) {
delete[] vec;
vec = nullptr;
}
return vec;
}
int main() {
cout << "n: ";
size_t n;
cin >> n;
auto vec = create(n);
if (vec) {
fill_r(vec, n, -100, 100);
show(vec, n);
cout << "k: ";
int k;
cin >> k;
replace(vec, n, k);
show(vec, n);
}
vec = destroy(vec);
system("pause");
}
Владислав Данилюк
Владислав Данилюк
58 726
Лучший ответ
выскочил за границу массива
for (int i = 0; i < n-1; i++) if (arr[i] < k) arr[i] = k; // вуаля!

arr[10] индексируется от 0 до 9 // для примера
с каких пор память под массив выделяется как new arr(n); а не new arr[n]; ?
У тебя просто огромная жопа ...