mod(x,y)
- это остаток от деления x
и y
, имеющий тот же знак, что и y
.Таким образом, учитывая отрицательный x
, знак все еще положительный.Это отличается от того, как mod
определено в других языках.
Я, очевидно, y
должно быть количеством символов в диапазоне az.x
- это индекс на основе 0 для смещенного символа, который должен быть 0 для «a» и y-1
для «z».Вы можете получить это простым вычитанием значения ASCII «a»:
letter - 'a'
Обратите внимание, что 'a'
- это символ, который неявно преобразуется в значение ASCII буквы в арифметических операциях.
Результат операции mod
затем снова возвращает один такой индекс, который можно превратить в символ, добавив значение ASCII «a»:
char(index + 'a')
Собрав все вместе:
char(mod(letter-'a', 'z'-'a'+1) + 'a')
Вместо letter
вы можете использовать вектор букв (массив символов) в этом выражении.