Форум программистов, компьютерный форум, киберфорум
Наши страницы

Turbo Pascal

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
yozzi
3 / 3 / 1
Регистрация: 14.03.2013
Сообщений: 149
#1

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

19.03.2013, 20:03. Просмотров 3163. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Расшифровка шифра цезаря (Turbo Pascal):

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

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

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

Шифр Цезаря - Pascal
Помогите написать программку, которая будет зашифровывать методом диска шифра Цезаря, т.е. нужно задать исходный текст, количество знаков...

Шифр Цезаря - Turbo Pascal
Учительница истории Ирина Викторовна очень любит археологические находки. Однажды , посещая один из музеев Рима , она прочитала...

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

6
Cyborg Drone
Модератор
5490 / 3099 / 1286
Регистрация: 17.08.2012
Сообщений: 10,017
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 / 1
Регистрация: 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
Модератор
54037 / 41670 / 14750
Регистрация: 18.05.2008
Сообщений: 97,986
22.03.2013, 12:59 #4
Ну так
Цитата Сообщение от yozzi Посмотреть сообщение
без mod 26+1
0
yozzi
3 / 3 / 1
Регистрация: 14.03.2013
Сообщений: 149
22.03.2013, 13:51  [ТС] #5
Цитата Сообщение от Puporev Посмотреть сообщение
Ну так
вот что происходит, последний символ не выводит, если делать mod (26+1), то не будет выводить "a" и т.д
0
Изображения
 
Cyborg Drone
Модератор
5490 / 3099 / 1286
Регистрация: 17.08.2012
Сообщений: 10,017
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
Привет! Вот еще темы с ответами:

Шифр Цезаря - Turbo Pascal
нужно написать программу которая для данного текста шифрует его с помощью шифра которые придумал Цезарь. что бы зашифровать текст таким...

Код Цезаря - Turbo Pascal
"Дан текст из 200 символов. Зашифровать этот текст кодом Цезаря (каждый символ заменяется другим символом, код которого на N больше...

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

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


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

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

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