Как заполнить массив заданным пользователем числом случайных значений - PullRequest
1 голос
/ 10 марта 2020

Работаю над упражнением, и я думаю, что я достаточно близок к тому, чтобы сделать это правильно. Приглашение попросит пользователя сказать, сколько случайных чисел они хотят сгенерировать, а затем сгенерировать столько случайных чисел. Для простоты у меня случайные числа будут 0-1000. Мы тоже практикуемся в использовании файлов, поэтому хотим, чтобы это было записано в файл.

#include <iostream>
#include <fstream>
#include <ctime>

int main()
    {
    int userinput,i, N, rdnum[N];
    std::ofstream ofs;

    std::cout << "How many random numbers do you want to generate?\n";
    std::cin >> N;

    srand(time(0));
    rdnum[N] = rand() % 1001;

    ofs.open("rand_numbers.txt");

    if (!ofs)
    {
        std::cout << "Open error\n";
        exit(0);
    }

    else if (ofs.good())
    {
        for (i = 0; i < N; i++)
        {
            std::cout << "Random numbers: " << rdnum[i] << std::endl;
            ofs << rdnum[i] << std::endl;
        }
    }
}

Спасибо!

1 Ответ

1 голос
/ 10 марта 2020
int userinput,i, N, rdnum[N];

Здесь вы объявляете целое число N, оставляя его с неопределенным значением.

Вы также объявляете массив длины N. Поведение использования неопределенного значения, подобного этому, не определено.

Кроме того, N не является постоянным значением времени выполнения, поэтому его использование в качестве размера автоматического c массива некорректно.

Чтобы создать массив размера времени выполнения, вы должны использовать динамическое хранилище c. Самый простой способ создать динамический массив c - использовать std::vector. Обратите внимание, что для этой простой программы не нужен массив, так как вы можете просто вывести случайное число непосредственно в l oop, где оно генерируется.

...