программа шифрования алфавита

0

Привет, я работаю над программой шифрования. Программа должна взять письмо, введенное пользователем, и заменить его соответствующей буквой 11 мест дальше по алфавиту. Например, если пользователь вводит "joe", программа должна выводить "uzp".

Мой текущий код делает это прекрасно, но он не распознает пробелы, и программа должна обернуть алфавит. Так что "Y" станет "J", а "Z" станет "K" и т.д. Кто-нибудь знает, как я мог это исправить?

void encrypt(std::string &e);

int main() {

    string nameAttempt;

    cout << "Enter your name to be Encrypted: ";
         cin >> nameAttempt;


    cout << "Original string is: " << nameAttempt << endl;
         encrypt( nameAttempt );

    cout << "Encrypted string is: " << nameAttempt << endl;


system("pause");
return 0;
}


void encrypt (std::string &e) {
     const char* tempCharArray = e.c_str();
     for( int i=0; i<e.size(); ++i )
     e[i] = tempCharArray[i]+11;  
     } // 
Теги:
encryption

2 ответа

1
Лучший ответ

Предполагая, что вы хотите:

  • Замените строчные буквы строчными буквами
  • Заменить прописные буквы прописными буквами
  • Оставьте пробелы и любые другие неалфавитные символы, как

void encrypt (std::string &e)
{
    int size = e.size();
    for (int i=0; i<size; i++)
    {
        char c = e[i];
        if (('A' <= c && c <= 'Z'-11) || ('a' <= c && c <= 'z'-11))
            e[i] = c+11;
        else if ('Z'-11 < c && c <= 'Z')
            e[i] = c+11-'Z'+'A';
        else if ('z'-11 < c && c <= 'z')
            e[i] = c+11-'z'+'a';
    }
}
  • 0
    Это не охватывает алфавит, хотя. Он также не распознает пробелы.
  • 0
    @ user3420131: 1. Это обернуть вокруг алфавита. 2. Вы не упомянули в своем вопросе, что вы хотите делать с пробелами, поэтому я предположил, что вы хотите оставить пробелы как есть (именно так, как я упоминал в начале ответа !!!).
Показать ещё 5 комментариев
0

Вы могли бы сделать что-то вроде этого:

char _character='X';

int _value=static_cast<int>(_character);

if(_value!=32)//not space
{

    int _newValue=((_value+11)%90);

    (_newValue<65)?_newValue+=65:_newValue+=0;

    char _newCharacter=static_cast<char>(_newValue);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню