Программа выдаёт ошибку при вызове функции(строка 129)

#include <string>
#include <random>
#include <ctime>

using namespace std;

/**
 * \brief Заполнение массива случайными числами.
 * \param size размер массива.
 * \param minValue минимальное значение элементов массива.
 * \param maxValue максимальное значение элементов массива.
 * \return заполненный массив.
 */
int* FillRandomArray(size_t size, int minValue, int maxValue);

/**
 * \brief Вывод массива на консоль.
 * \param array массив.
 * \param size размер массива.
 */
void ArrayPrint(const int* array, size_t size);

/**
 * \brief Замена минимального элемента массива на средний.
 * \param array массив.
 * \param size размер массива.
 * \param maxValue максимальное значение, которое может принимать элемент массива.
 */
void minToAverageChange(const int* array, const size_t size, const int maxValue);

/**
 * \brief Определяет, четность или нечетность числа.
 * \param element число.
 * \return если нечетное, то true. Если четное - false
 */
bool IsOdd(int element);

/**
 * \brief Копирование исходного массива.
 * \param array исходный массив.
 * \param size размер массива.
 * \return новый массив со скопированными элементами.
 */
int* ArrayCopy(const int* array, size_t size);

/**
 * \brief Метод, возвращающий заполненный пользователем массив.
 * \param size размер массива.
 * \param minValue минимальное значение элементов массива.
 * \param maxValue максимальное значение элементов массива.
 * \return заполненный массив.
 */
int* FillUserArray(size_t size);


/**
 * \brief Метод преобразования строки в целое число
 * \param value неинициализированная переменная
 * \return true, если введено целое число. Инициализируем переменную правильным вводом.
 *false, если строка не может быть преобразована в целое число. Нет инициализации переменной.
 */
bool checkSize(size_t& value);

/**
 * \brief
 */
enum class ArrayInputWay
{
    random,
    keyboard
};

/**
 * \brief Точка входа в программу
 * \return 0, в случае успеха
 */
int main()
{
    cout << "Введите размер массива = ";
    size_t size;
    cin >> size;
    if (!checkSize(size))
    {
        cout << "Error!";
    }

    if (size == 0)
    {
        cout << "Введён неверный размер!\n";
    }

    cout << "Как вы хотите заполнить массив?\n";
    cout << static_cast<int>(ArrayInputWay::random) << " - random,\n";
    cout << static_cast<int>(ArrayInputWay::keyboard) << " - keyboard.\n";
    cout << "Ваш выбор: ";
    int choice;
    cin >> choice;
    
    const auto chosen = static_cast<ArrayInputWay>(choice);
    int* myArray = nullptr;

    switch (chosen)
    {
    case ArrayInputWay::random:
    {
        auto minValue = 0;
        auto maxValue = 0;
        cout << "Введите диапазон чисел массива (сначала минимум, потоммаксимум) " << endl;
        cin >> minValue >> maxValue;
        if (maxValue <= minValue)
        {
            cout << "Введен неправильный диапазон!" << endl;
        }
        myArray = FillRandomArray(size, minValue, maxValue);
        break;
    }
    case ArrayInputWay::keyboard:
    {
        myArray = FillUserArray(size);
        break;
    }
    }

    ArrayPrint( myArray, size);

    cout << "Массив с заменённым минимальным элементом элементом: ";
    
    minToAverageChange(array, size, maxValue);

    cout << endl;
    return 0;
    
}

int* ArrayCopy(const int* array, const size_t size)
{
    if (array == nullptr)
        return nullptr;

    const auto copiedArray = new int[size];
    for (size_t index = 0; index < size; index++)
    {
        copiedArray[index] = array[index];
    }
    return copiedArray;
}

void minToAverageChange(const int* array, const size_t size, const int maxValue )
{
    if (array == nullptr)
        cout << "Массив пуст";

    const auto newArray = ArrayCopy(array, size);
    auto minArrayValue = maxValue;

    for (size_t index = 0; index < size; index++) {
        if (newArray[index] < minArrayValue) {
            minArrayValue = newArray[index];
        }
    }
    newArray[(size + 1) / 2] = minArrayValue;

    cout << "\nИзменённый массив:\n";

    for (size_t index = 0; index < size; index++) {
        cout << newArray[index];
    }
    cout << "\n";
}

bool IsOdd(const int element)
{
    return element % 2 != 0;
}

void ArrayPrint(const int* array, const size_t size)
{
    if (array == nullptr)
    {
        cout << "Массива не существует";
    }
    else {
        cout << "\nМассив:\n";
        for (size_t index = 0; index < size; index++) {
            cout << array[index] << " ";
        }
        cout << "\n";

    }
}

int* FillRandomArray(const size_t size, const int minValue, const int maxValue)
{
    const auto area = abs(minValue) + abs(maxValue) + 1;
    auto* array = new int[size];
    for (size_t index = 0; index < size; index++) {
        array[index] = rand() % area + minValue;
        cout << array[index] << endl;
    }

    return array;
}

int* FillUserArray(const size_t size)
{
    auto* array = new int[size];
    cout << "Введите элементы массива" << "\n";
    for (size_t index = 0; index < size; index++)
    {
        cin >> array[index];
    }
    return array;
}

bool checkSize(size_t& value)
{
    string str;
    getline(std::cin, str);
    const auto size = str.size();
    size_t index = 0;
    while (index < size && isdigit(str[index]))
    {
        index++;
    }

    value = std::stoi(str);
    return index >= size;
}

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