Домашнее задание (ревизия): шифр Цезаря, переворачивайте, когда символы>> z (C++)
Я был здесь раньше и получил руку, добавляя к chars ascii ссылки, чтобы увеличить шифровальный сдвиг на каждой букве. Тем не менее, я понятия не имею, как решить проблему символов выше "z".
Может кто-нибудь дать мне подсказку о том, как оборачиваться, когда символы доходят до конца алфавита. Конечно, я не ожидаю, что кто-нибудь сделает за меня мою работу.
char decrypt(char letter)
{
int increment = 9;
if(letter == ' ')
{
return letter;
}
letter += increment;
return letter;
}
int main()
{
char message[446]; int i = 0; char space = ' ';
ifstream in("encryptedText.txt");
if(in.getline(message, 446))
{
while(message[i])
{
cout << decrypt(tolower(message[i])) << endl;
i++;
}
}
else
{cout << "Can't read file" << endl;}
cout << endl;
system("pause");
}
1 ответ
Решение
Операция по модулю - твой друг. Всякий раз, когда целые числа образуют кольцо вместо последовательности, можно применять операцию по модулю, например:
5 % 4 == 17 % 4
Вы должны вычислить это в целочисленном пространстве относительно 'a'
, конечно, вычитая 'a'
соответственно.