Цезарь Шифр - Что не так?

0

У меня возникла проблема с запуском программы шифрования. Для строк с одним словом он работает хорошо (например, abcd), но когда я печатаю два или три или более слова (например, abcd ab ac), он не запрашивает ключ, но переписывает введенное предложение, Что я делаю не так? Заранее спасибо. Код:

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <conio.h>
#include <string>
#include <stdlib.h>
#include <stdio.h>

int main()
{
        int key, l;
        char choose;
        string message;
        cout<<"Type the message"<<endl;
        cin>>message;
        cout<<"Give me a key from 0 to 26"<<endl;
        cin>>key;
        for (int i=0,l=message.size(); i<=l; i++)
        {
            if (isalpha(message[i]))
            {
                if (isupper(message[i]))
                {
                    cout<<(char)('A'+(message[i]-'A'+key)%26);
                }
                if (islower(message[i]))
                {
                    cout<<(char)('a'+(message[i]-'a'+key)%26);
                }
            }
            else
            {
                cout<<message[i];
            }
        }
        return 0;
}
  • 2
    На это было бы намного проще ответить, если бы мы могли видеть, какой код вы написали. В противном случае это соревнование тех, кто может угадать и / или прочитать ваши мысли.
  • 0
    Извините, я забыл об этом. Я редактировал это.
Показать ещё 2 комментария
Теги:
string
encryption

1 ответ

1

использование

std::getline(std::cin, message);

cin делает только чтение до следующего пробела, остальная часть ввода хранится в буфере потока, чтобы вы получили следующее слово вашего предложения, введенное на первом шаге, в качестве ввода для вашего второго cin.

  • 0
    Спасибо, это сработало. Можете ли вы объяснить мне, почему мое решение не было правильным?
  • 0
    Я отредактировал свой ответ

Ещё вопросы

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