Рейтинг:
2
KarstenK
Вы должны сами понять код, но я могу дать вам обзор. Прочитайте некоторые учебники для изучения языка и google для функций.
Код читает файл и подсчитывает "\n" так называемых новых строк. После считывания значений в диапазоне счетчик выбирается случайным образом. Затем файл перечитывается с самого начала, а выбранное слово копируется в буфер. Я бы добавил некоторые выходные данные с помощью е об этом.
printf ("The chosen word is: %s\n", chosenWord);
Рейтинг:
2
CPallini
Строка, ответственная за выбор случайного слова, такова:
chosenWordNumber = aleatoryNumber(wordsNumber);
Он зовет
aleatoryNumber
передавая количество найденных слов в качестве аргумента.
То
int aleatoryNumber(int maxNumber)
{
srand(time(NULL));
return (rand() % maxNumber);
}
функция возвращает случайное число между
0
и
(maxNumber-1)
, потому что
то
рант[
^]
C
библиотечная функция возвращает число между
0
и
RAND_MAX
и его результат зажат в
0...maxNumber
диапазон действия оператора напоминания.
Другие решения уже в общих чертах объясняли полное поведение кода.
k5054
Просто короткая заметка о том, что aleatoryNumber()
: Эта функция вызывает srand()
каждый раз, который сбрасывает механизм случайных чисел для каждого вызова функции aleatoryNumber(). В этом случае, похоже, что aleatoryNumber() вызывается только один раз, так что это не большая проблема. Однако если бы у вас было что-то вроде
int r1 = aleatoryNumber(10);
int r2 = aleatoryNumber(10);
вы можете быть удивлены, что
r1 == r2
это правда чаще, чем нет.
Rick York
srand использует значение времени в качестве начального значения, поэтому последовательность случайных чисел будет иметь одинаковые значения только в том случае, если она вызывается дважды в течение одной и той же секунды. Вероятно, он должен быть вызван с ( time(NULL) % RAND_MAX ) в качестве аргумента на самом деле.
k5054
2-й комментарий aleatoryNumber
Существуют всевозможные проблемы с rand()
в общем. Смотрите первые 11 минут этого фильма: rand() считается вредным | GoingNative 2013 | Channel 9[^] для хорошего изложения проблем с rand()
. Остальная часть видео охватывает <random>
заголовок введен в C++11, так что, возможно, стоит посмотреть на тех, кто хочет лучше генерировать случайные числа.
Рейтинг:
0
OriginalGriff
Вы хоть представляете, как много работы по построчному объяснению кода?
Каждая строка нуждается в пояснении! Например:
int next = r.Next();
Создайте новую переменную под названием "next", которая может содержать целочисленное значение. Из ранее объявленного случайного экземпляра "r" вызовите метод "Next", чтобы получить новое случайное число, и назначьте его переменной "next".
Можете себе представить, сколько времени нам потребуется, чтобы объяснить даже такой очень короткий фрагмент кода, как ваш пример, строка за строкой?
Нет, этого не произойдет. Если у вас есть конкретная проблема, то задайте вопрос о ней. Но сначала подумайте - хотите ли вы сесть на 45 минут и напечатать построчное описание без веской причины?