Автору большое спасибо за серию постов!
Если можно вот тут пояснить, что и как происходит?
for (int i=0; i < lettersCount; i++)
{
letters[i] = 'a' + rand() % (('z' - 'a') +1 );
}
В ДЗ справился пока только с 1 частью, буду эксперементировать дальше))
цикл от нуля до количества букв в строке.
каждой следующей букве в строке присваивается случайная буква от а до z.
(тип данных char - целочисленный, и все буквы идут по порядку, поэтому можно использовать такой вид записи рандомайза)
Про случайные числа и остаток от деления было рассказано в Части 2.
'a' + rand() % (('z' - 'a') +1 );
97 + rand() % ( (122 - 97) + 1 )
97 + rand() % 26;
Получим тут случайное число от 97 до 122 включительно. Про то, что это коды символов от 'a' до 'z' было рассказано в Части 3. :)
после знака % указывается диапазон значений (ширина), из которых будет выборка:
%5 значит из 5, %124 значит из 124. (т.к. % показывает остаток от деления: 3 % 2 = 1; 5 % 2 = 1; 17 % 5 = 2;)
Соответственно здесь ширина выборки будет от ( z - a ) + 1
Что это значит? С учетом предыдущей ('a' +) ширина диапазон будет от номера в таблице ASCII со значением a, до номера со значением z. Другими словами, любая буква от a до z.
+1 - потому что всё с нуля считается.
https://ru.wikipedia.org/wiki/ASCII
a - имеет номер 98 в таблице, z - 123
можно было бы написать ( 98 + random () % (123 - 98 + 1). Число, полученное в результате сверяется с сиволом в ASCII, результат выдаётся в виде этого символа
так понятно? или желательно ещё подробнее =)