С++ Закодируйте фразу 039;Съешь же ещё этих мягких французских булок, да

С++
Закодируйте фразу 'Съешь же ещё этих мягеньких французских булок, да опьяней чаю' с помощью шифра Цезаря. Со сдвигом на 7.

Задать свой вопрос
1 ответ
Dec C++

include lt;iostreamgt;
include lt;cstringgt;
using namespace std;
 
int main()

    setlocale (LC_CTYPE, "Russian"); 
 
    char alpha[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    char buff[]="Съешь же ещё этих мягеньких французских булок, да опьяней чаю.";
    int n = 66, k=7;
         k %= n;

    for (int i = 0; i lt; sizeof(buff)-1; ++i)
        if (strchr(alpha,buff[i])) 
buff[i] = alpha[(strchr(alpha,buff[i])-alpha+k) % n];

    coutlt;lt;bufflt;lt;endl;
        system("pause");
    return 0;

Даниил Авгаров
Сможете разъяснить вот этот кусок for (int i = 0; i < sizeof(buff)-1; ++i) if (strchr(alpha,buff[i])) buff[i] = alpha[(strchr(alpha,buff[i])-alpha+k) % n]; ?
Sachakov Anatolij
Функция strchr() исполняет поиск первого вхождения символа в строку, т.е. в строке alpha ищется очередной (i-ый) символ данной строчки buff. Если символ найден, т.е. если проверяемый знак - российская буковка, то из строчки alpha берётся знак, номер которого на k больше, чем номер текущего знака.
Света
Если при сложении выходит значение >= 66 (= числу знаков в alpha), то номер определяется как остаток от деления полученного значения на 66. К примеру, для буквы "ю": 64+7 = 71, 71 % 66 = 5. Таким образом, буква "ю" заменяется на 5-ый знак строчки alpha, т.е. на "Е".
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт