Цезарь, оборачивайся, когда символы>> z - PullRequest
2 голосов
/ 13 декабря 2011

Я был здесь раньше и получил руку, добавляя к символам ссылки 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 голосов
/ 13 декабря 2011

Операция по модулю - ваш друг. Всякий раз, когда целые числа образуют кольцо вместо последовательности, можно применять операцию по модулю, например:

5 % 4 == 17 % 4

Вам нужно вычислить это в целочисленном пространстве относительно 'a', конечно, вычитая 'a' соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...