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

Ответы 4

  • Можете объяснить вот этот кусок for (int i = 0; i < sizeof(buff)-1; ++i) if (strchr(alpha,buff[i])) buff[i] = alpha[(strchr(alpha,buff[i])-alpha+k) % n]; ?
    • Автор:

      melody91
    • 6 лет назад
    • 0
  • Функция strchr() выполняет поиск первого вхождения символа в строку, т.е. в строке alpha ищется очередной (i-ый) символ заданной строки buff. Если символ найден, т.е. если проверяемый символ - русская буква, то из строки alpha берётся символ, номер которого на k больше, чем номер текущего символа.
  • Если при сложении получается значение >= 66 (= числу символов в alpha), то номер определяется как остаток от деления полученного значения на 66. Например, для буквы "ю": 64+7 = 71, 71 % 66 = 5. Таким образом, буква "ю" заменяется на 5-ый символ строки alpha, т.е. на "Е".
    • Автор:

      curlye8ga
    • 6 лет назад
    • 0
  • Dec C++#include <iostream>#include <cstring>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 < sizeof(buff)-1; ++i)        if (strchr(alpha,buff[i]))  buff[i] = alpha[(strchr(alpha,buff[i])-alpha+k) % n];    cout<<buff<<endl;        system("pause");    return 0;}
    • Автор:

      sampson65
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years