Я предполагаю, что вы хотите добавить n
к каждому элементу (которые char
s) строки a
и возникли проблемы, когда оно превышает максимальное значение алфавитов в ASCII-таблице . то есть ASCII, соответствующая букве z
, которая является 122
.
В этом случае вы хотите начать снова с буквы a
.
Например:
ввод
stuvwxyz // a
5 // n
выход
xyzabcde
В этом случае проблема заключается в следующем.
Рассмотрим a
быть std::string a{ "z" };
Когда вы сделаете это
a[i] = a[i] + n;
вы уже добавили n
к персонажу и превысили максимальный лимит, независимо от того, какой символ в a[i]
. Это означает, что вам нужно делать это только тогда, когда это не относится к a[i] + n > 122
.
Просто назначьте изменение каждому символу строки a
после необходимых шагов в условии if.
( Смотрите здесь для
демо )
short n = 5; // std::cin >> n;
for (std::size_t i = 0; i < a.size(); ++i)
{
short res = static_cast<short>(a[i]) + n;
if (res > 122)
{
res %= 122;
res += 96;
}
a[i] = static_cast<char>(res);
}