Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
yozzi
3 / 3 / 2
Регистрация: 14.03.2013
Сообщений: 149
#1

Расшифровка шифра цезаря

19.03.2013, 20:03. Просмотров 3372. Ответов 6
Метки нет (Все метки)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program rasshifr;
uses crt;
var a,b,c:string;
i,j,k,d:integer;
begin
clrscr;
writeln('vvedite text dlya raswifrovki: ');
readln(a);
writeln('vvedite kluch: ');
readln(d);
c:='';
b:='abcdefghijklmnopqrstuvwxyz';
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
k:=(j-d) mod 27;
if a[i]=b[j] then c:=c+b[k];
end;
writeln('rezultat: ');
writeln(c);
readkey;
end.
Ошибка - выход за границы диапазона изменения индекса (строка 17). Как исправить? Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2013, 20:03
Ответы с готовыми решениями:

Зашифровать строку с помощью шифра перестановки
Дана строка текста. Зашифровать ее с помощью шифра перестановки, который...

Реализация шифра перестановки для заданного ключа
Напишите пожалуйста код реализация шифра перестановки для заданного ключа в...

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

Шифр Цезаря
Нужно написать программу Шифра Цезаря не с ключом а методом перебора. Как ее...

Код Цезаря
"Дан текст из 200 символов. Зашифровать этот текст кодом Цезаря (каждый символ...

6
Cyborg Drone
Модератор
5286 / 3156 / 2441
Регистрация: 17.08.2012
Сообщений: 10,151
21.03.2013, 17:49 #2
Pascal
1
k:=(j-d) mod 27;
- k получается отрицательным. Массив b надо свернуть в кольцо. Думаю, вместо этой строки правильно так:
Pascal
1
k := (j - d + 26) mod 26 + 1;
1
yozzi
3 / 3 / 2
Регистрация: 14.03.2013
Сообщений: 149
22.03.2013, 12:53  [ТС] #3
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Pascal
1
k:=(j-d) mod 27;
- k получается отрицательным. Массив b надо свернуть в кольцо. Думаю, вместо этой строки правильно так:
Pascal
1
k := (j - d + 26) mod 26 + 1;
лучше так (без mod 26+1):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program rasshifr;
uses crt;
var a,b,c:string;
i,j,k,d:integer;
begin
clrscr;
writeln('vvedite text dlya raswifrovki: ');
readln(a);
writeln('vvedite kluch: ');
readln(d);
c:='';
b:='abcdefghijklmnopqrstuvwxyz';
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
k:=(j-d+26) mod 26;
if a[i]=b[j] then c:=c+b[k];
end;
writeln('rezultat: ');
writeln(c);
readkey;
end.
это я исправил, но там теперь проблема в том, что вместо последнего символа "z" выводит почему то "[]"
0
Puporev
Модератор
54346 / 41940 / 28976
Регистрация: 18.05.2008
Сообщений: 98,782
22.03.2013, 12:59 #4
Ну так
Цитата Сообщение от yozzi Посмотреть сообщение
без mod 26+1
0
yozzi
3 / 3 / 2
Регистрация: 14.03.2013
Сообщений: 149
22.03.2013, 13:51  [ТС] #5
Цитата Сообщение от Puporev Посмотреть сообщение
Ну так
вот что происходит, последний символ не выводит, если делать mod (26+1), то не будет выводить "a" и т.д
0
Изображения
 
Cyborg Drone
Модератор
5286 / 3156 / 2441
Регистрация: 17.08.2012
Сообщений: 10,151
24.03.2013, 00:17 #6
yozzi, вот при
Pascal
1
k:=(j-d+26) mod 26 + 1;
Название: ceasar.png
Просмотров: 357

Размер: 2.9 Кб
Что не так?
0
Ariana_03_97
0 / 0 / 1
Регистрация: 03.02.2016
Сообщений: 1
03.02.2016, 22:12 #7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program z1;
uses crt;
var a,b,c:string;
i,j,k,d:integer;
begin
clrscr;
writeln('слова');
readln(a);
writeln('ключ');
readln(d);
c:='шифр   ';
b:='abcdefghijklmnopqrstuvwxyz';
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
k:=(j-d+25) mod 26+1;
if a[i]=b[j] then c:=c+b[k];
end;
writeln(c);
readkey;
end.
так будет правильно

Добавлено через 1 минуту
yozzi,

Добавлено через 35 минут
25mod26=25
0
03.02.2016, 22:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2016, 22:12

Шифр Цезаря
помогите нужно сделать прогу шифратор и дешифратор методом Цецаря

Шифр Цезаря
нужно написать программу которая для данного текста шифрует его с помощью шифра...

Шифр Цезаря
Программа, которая шифрует файл с помощью шифра, который придумал Цезарь (т.е....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru