208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323

Зашифровать послание с помощью шифра Цезаря с заданным шагом шифрования

14.11.2018, 20:46. Показов 38080. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как известно, Цезарь тоже пользовался шифрованием сообщений, причем у него был свой способ. Сначала выбирается шаг шифрования (число), а затем все буквы послания заменяются на буквы, отстоящие от них в алфавите на шаг шифрования. Например, при шаге шифрования 3 (таким чаще всего пользовался Цезарь), буква А заменяется на букву Г, буква Б – на букву Д.

Напишите программу, которая будет зашифровывать послание с помощью шифра Цезаря с заданным шагом шифрования.

Формат ввода
Две строки. Первая содержит шаг шифрования, вторая – послание.

Формат вывода
Строка с зашифрованным посланием.

Есть код:
Python
1
2
3
4
5
6
7
8
step = int(input()) 
word = input() 
 
for i in word: 
    if chr(ord(i)) == ' ' or chr(ord(i)) == '!': 
        print(i, end='') 
    else: 
        print(chr(ord(i) + step), end='')

Python
1
2
3
Ввод:                          Ожидаемый результат:                 Вывод:
4                                 Ъйлдфа еяп сй ичфдо!                  Ъйлдфѐ еяп сй ичфдо!
Цезарь был не дурак!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2018, 20:46
Ответы с готовыми решениями:

Зашифровать-расшифровать текст с помощью шифра Цезаря
Задание такое - текст из файла Прізвище1.txt зашифровать в Прізвище2.txt, а потом дешифровать из Прізвище2.txt в Прізвище3.txt. Люди,...

Зашифровать исходный текст Т с шифра Цезаря с ключом k=20, любой язык программирования
1) Зашифровать исходный текст Т с шифра Цезаря с ключом k=20. Т=«ЛУЧШИЙ КРИТЕРИЙ ПРАКТИКА» 2) Описать ход решения с указанием таблицы...

Составить блок-схемы к программам шифрования и расшифрования шифра Цезаря
Помогите составить блок-схемы к программам шифрования и расшифрования шифра Цезаря Program kodiruet; uses crt; var a,b,c:string;...

12
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
14.11.2018, 23:54
В яндекс лицее пользоваться поиском не учат? На форуме больше более 400 тем с решениями этой элементарной задачи. Вам их блюдечке принести? Вы вообще когда-нибудь смотрите темы, которые движок форума вам предлагаете автоматически (внизу страницы)?
2
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 09:42  [ТС]
Garry Galler,
Из них больше половины на других языках. А другая половина, просто мне не понятный код. Умею работать со строками. Вот я написал код, и попросил помочь найти ошибку.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
15.11.2018, 10:06
Цитата Сообщение от CyberGame Посмотреть сообщение
попросил помочь найти ошибку
как ты определил, что есть ошибка?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
15.11.2018, 13:00
Цитата Сообщение от CyberGame Посмотреть сообщение
Из них больше половины на других языках
Если искать в разделе python - решения внезапно будут на языке Python. И они все перечислены внизу ЭТОЙ СТРАНИЦЫ.
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
15.11.2018, 19:05  [ТС]
xoraxax, пример не проходит.
Garry Galler, еще раз говорю, я попросил переделать мой код, ибо другие я не понимаю.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.11.2018, 21:27
CyberGame, просто интересно, а почему ты решил, что вывод должен быть
Ъйлдфа еяп сй ичфдо!
?
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
15.11.2018, 22:07
Условие написано бестолково. Во-первых не задан алфавит. Ну, можно предположить, что это все 33 русские буквы. А во-вторых, не сказано, что сдвиг используется циклический, то есть буква Я должна меняться на В при шаге равном трём 3.
В коде из стартпоста не хватает организации этой цикличности.
И для проверки правильнее вводить не произвольную строку, а весь алфавит, так виднее, где работает неправильно.
0
0 / 0 / 0
Регистрация: 22.09.2018
Сообщений: 9
15.11.2018, 22:08
CyberGame, Лови (алфавит можешь менять, tkinter для GUI)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from tkinter import *
import sys
 
 
alpha = "abcdefghijklmnopqrstuvwxyz ";
 
def encr_click():
    key = int(key_entry.get());
    length = len(alpha);
 
    res = '';
 
    for c in text_entry.get():
 
        if c.lower() in alpha:
            s1 = alpha.find(c.lower());
            s1 = (s1 + key) % length;
            res += alpha[s1];
        else:
            res += c;
    
    res_entry.delete(0, END);
    res_entry.insert(0, res);
 
def dencr_click():
    key = int(key_entry.get());
    length = len(alpha);
 
    res = '';
 
    for c in text_entry.get():
 
        if c.lower() in alpha:
            s1 = alpha.find(c.lower());
            s1 = (s1 - key) % length;
            res += alpha[s1];
        else:
            res += c;
    
    res_entry.delete(0, END);
    res_entry.insert(0, res);
 
 
root = Tk();
root.title("Caesar cipher");
 
text_label = Label(text = "Enter your text: ", font = ("Verdana", 12));
key_label = Label(text = "Enter a key: ", font = ("Verdana", 12));
res_label = Label(text = "Your result is: ", font = ("Verdana", 12));
 
text_label.grid(row=0, column=0, sticky="w");
key_label.grid(row=1, column=0, sticky="w");
res_label.grid(row=2, column=0, sticky="w");
 
 
text_entry = Entry(root, font = ("Verdana", 12, "bold"));
key_entry = Entry(root, font = ("Verdana", 12, "bold"));
res_entry = Entry(root, font = ("Verdana", 12, "bold"));
 
text_entry.grid(row = 0, column = 1, padx = 5, pady = 5);
key_entry.grid(row = 1, column = 1, padx = 5, pady = 5);
res_entry.grid(row = 2, column = 1, padx = 5, pady = 5);
 
 
e_bt = Button(root, text = "Encrypt", command = encr_click, background = "#555", 
                foreground = "#ccc", font = ("Verdana", 16, "bold"));
d_bt = Button(root, text = "Decrypt", command = dencr_click, background = "#555", 
                foreground = "#ccc", font = ("Verdana", 16, "bold"));
 
e_bt.grid(row = 3, column = 1, padx = 5, pady = 5, sticky = "w");
d_bt.grid(row = 3, column = 1, padx = 5, pady = 5, sticky = "e");
 
 
root.mainloop();
0
208 / 95 / 15
Регистрация: 27.07.2018
Сообщений: 323
16.11.2018, 19:00  [ТС]
kravam, я отправлял этот код, его не приняли, и показали ожидаемый результат.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
16.11.2018, 20:07
Ну вот тебе «исправленный» твой вариант. Хотя правильнее задавать алфавит в явном виде.
Python
1
2
3
4
5
6
7
8
9
step = int(input()) 
word = input() 
 
for i in word: 
    if chr(ord(i)) == ' ' or chr(ord(i)) == '!': 
        print(i, end='') 
    else: 
        base = ord('А') if i.isupper() else ord('а')
        print(chr((ord(i) + step - base) % 32 + base), end='')
2
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
16.11.2018, 20:11
Python
1
2
3
4
5
6
7
8
9
10
11
def ceasar_encode(letter, shift):
    if letter.isalpha():
        number = ord(letter) + shift % 32
        if number  > 1103:
            number -= 32
        return chr(number)
    return letter
 
shift = int(input())
for l in input():
    print(ceasar_encode(l, shift), end='')
0
1 / 1 / 0
Регистрация: 02.01.2019
Сообщений: 12
04.01.2019, 15:47
Semen-Semenich
def ceasar_encode(letter, shift):
if letter.isalpha():
number = ord(letter) + shift % 32
if number > 1103:
number -= 32
return chr(number)
return letter

shift = int(input())
for l in input():
print(ceasar_encode(l, shift), end='')
Запятую не выводит, шифрует ее как букву "б". Как исправить???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2019, 15:47
Помогаю со студенческими работами здесь

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

Зашифровать свою фамилию и имя с помощью шифра ADFGVX.
необходимо зашифровать свою фамилию и имя с помощью шифра ADFGVX. скиньте готовую программу, пожалуйся

Реализация алгоритма шифрования с помощью шифра с использованием десятибуквенного кодового слова
Помогите, пожалуйста! Напишите программу (на знакомом вам языке программирования), реализующую алгоритм шифрования с помощью шифра с...

Разработать прикладной приложение для шифрования текста с помощью шифра простой замены
Разработать прикладной приложение для шифрования текста с помощью шифра простой замены. Приложение должно выполнять ввод данных (текст...

Чтобы заново зашифровать послание, Соне нужно найти минимальное из чисел
Чтобы заново зашифровать послание, Соне нужно найти минимальное из чисел. Есть число n и последовательность из n чисел. Выведите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru