Вопрос задан 30.09.2023 в 21:54. Предмет Информатика. Спрашивает Чекрыгина Кира.

Решить только на С++ Шифр Цезаря В шифре Цезаря каждый символ, являющийся буквой латинского

алфавита, заменяется на другой символ, k-тый по счёту в алфавите после данного. Если этот символ выходит за границы, то берётся соответствующий из начала строки. Например, для k=3 символ A заменяется на D, символ B — на E, символ C — на F, ..., символ Z – на C. Аналогично, строчные буквы заменяются на строчные буквы. Все остальные символы не меняются. Дана строка, зашифруйте её при помощи шифра Цезаря для k=3. Входные данные Дана строка из символов с ASCII кодами от 32 до 127 длиной не больше 10000 символов. Выходные данные Выведите ответ на задачу. Примеры Ввод In a hole in the ground there lived a hobbit. Вывод Lq d kroh lq wkh jurxqg wkhuh olyhg d kreelw.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Гутырчик Альбина.

Ответ:

#include <iostream>

#include <string>

#include <conio.h>

#include <stdlib.h>

#include <sstream>

#include <fstream>

using namespace std;

int main()

{

int k; //Переменная выбора - шифрование/дешифрование

int shift; //Величина сдвига

string result = ""; //Строка - результат

cout<<"Enter 1 for encryption and decryption of 2\n";

cin>>k;

switch (k) //Если k

{

case 1: //Если выбрано шифрование

{

cout<<"Enter value shift for encryption\n";

cin>>shift;

if (shift > 26)

shift = shift % 26; //Вычисление сдвига

cout<<"Read of file...\n";

setlocale(LC_ALL,"Russian");//Чтение файла

string s; //Строка считанная из файла

ifstream in("Test.txt");

getline(in,s);

cout<<"Text of file: \n"<<s<<endl;

in.close();

cout<<"Reading complete!\n";

cout<<"Encryption...\n";

for (int i = 0; i < s.length(); i++)

{

//Если не латиница

if (((int)(s[i]) < 65)||((int)(s[i]) > 122))

result += s[i];

//Если буква является строчной

if (((int)(s[i]) >= 97) && ((int)(s[i]) <= 122))

{

//Если буква, после сдвига выходит за пределы алфавита

if ((int)(s[i]) + shift > 122)

//Добавление в строку результатов символ

result += (char)((int)(s[i]) + shift - 26);

//Если буква может быть сдвинута в пределах алфавита

else

//Добавление в строку результатов символ

result += (char)((int)(s[i]) + shift);

}

//Если буква является прописной

if (((int)(s[i]) >= 65) && ((int)(s[i]) <= 90))

{

//Если буква, после сдвига выходит за пределы алфавита

if ((int)(s[i]) + shift > 90)

//Добавление в строку результатов символ

result += (char)((int)(s[i]) + shift - 26);

//Если буква может быть сдвинута в пределах алфавита

else

//Добавление в строку результатов символ

result += (char)((int)(s[i]) + shift);

}

}

cout<<"Encryption complete!\n";

cout<<"Result:\n";

cout<<result; //Вывод результата

break;

}

case 2: //Если выбрано дешифрование

{

cout<<"Enter value shift for decryption\n";

cin>>shift;

if (shift > 26)

shift = shift % 26;

cout<<"Read of file...\n";

setlocale(LC_ALL,"Russian");

string s;

ifstream in("Test.txt");

getline(in,s);

cout<<"Text of file: \n"<<s<<endl;

in.close();

cout<<"Reading complete!\n";

cout<<"Decryption...\n";

for (int i = 0; i < s.length(); i++)

{

//Если не латиница

if (((int)(s[i]) < 65)||((int)(s[i]) > 122))

result += s[i];

//Если буква является строчной

if (((int)(s[i]) >= 97) && ((int)(s[i]) <= 122))

{

//Если буква, после сдвига выходит за пределы алфавита

if ((int)(s[i]) - shift < 97)

//Добавление в строку результатов символ

result += (char)((int)(s[i]) - shift + 26);

//Если буква может быть сдвинута в пределах алфавита

else

//Добавление в строку результатов символ

result += (char)((int)(s[i]) - shift);

}

//Если буква является прописной

if (((int)(s[i]) >= 65) && ((int)(s[i]) <= 90))

{

//Если буква, после сдвига выходит за пределы алфавита

if ((int)(s[i]) - shift < 65)

//Добавление в строку результатов символ

result += (char)((int)(s[i]) - shift + 26);

//Если буква может быть сдвинута в пределах алфавита

else

//Добавление в строку результатов символ

result += (char)((int)(s[i]) - shift);

}

}

cout<<"Decryption complete!\n";

cout<<"Result:\n";

cout<<result; //Вывод результата

break;

}

default: //Если ошибочное значение

{

cout<<"Error value\n";

break;

}

}

getch();

return 0;

}

0

0 0
Отвечает Прудник Оля.

Ответ:

числа в if берутся из кодов ASCII

Объяснение:

#include <stdio.h>

#include <string.h>

int

main ()

{

 char s[10001];

 int i = 0;

 for (int j = 0; j < 10001; j++) {

     scanf("%c", &s[j]);

     if (s[j] == '\n')

         break;

 }

 while (s[i] != '\n')

   {

   if (((int)s[i] > 64 && (int)s[i] < 91) || ((int)s[i] > 96 && (int)s[i] < 123))

     if ((int)s[i] > 124)

s[i] = (char)((int)s[i] - 92); //3-127+32=92

else

       s[i] = (char)((int)s[i] + 3);

   i++;

   }

 for (int j = 0; j < i; j++)

     printf("%c", s[j]);

 return 0;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Программа на C++ для шифрования строки с использованием шифра Цезаря с заданным значением k (в данном случае k=3) может выглядеть следующим образом:

cpp
#include <iostream> #include <string> using namespace std; // Функция для шифрования строки с помощью шифра Цезаря string encryptCaesarCipher(const string& input, int k) { string result = ""; for (char ch : input) { if (isalpha(ch)) { char base = islower(ch) ? 'a' : 'A'; result += char(((ch - base + k) % 26) + base); } else { result += ch; } } return result; } int main() { string input; int k = 3; // Значение k для шифра Цезаря cout << "Введите строку для шифрования: "; getline(cin, input); string encrypted = encryptCaesarCipher(input, k); cout << "Зашифрованная строка: " << encrypted << endl; return 0; }

Этот код сначала определяет функцию encryptCaesarCipher, которая принимает строку input и значение k, а затем шифрует строку, заменяя символы согласно правилам шифра Цезаря. В функции main пользователь вводит строку, которая затем шифруется с использованием функции encryptCaesarCipher, и результат выводится на экран.

Примечание: Этот код предназначен только для шифрования строки с использованием шифра Цезаря с k=3. Если вы хотите использовать другое значение k или декодировать зашифрованную строку, вам придется внести соответствующие изменения в код.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос