Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 10
1

Найти ошибку (шифровка/дешифровка)

16.12.2014, 21:46. Показов 1051. Ответов 6
Метки нет (Все метки)

Задание написать шифровку/дешифровку некоторой строки методом сдвига (шифр Цезаря)

Спустя 2 часа размышлений и попыток вывести хоть что-нибудь, получилось это:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const
n=3;
var
   i: integer;
   s: string;
 
begin
  writeln ('Введите предложение');
  readln (s); 
    for i := 1 to length(s) do
    begin
    if (ord(s[i]) + n) < ord('я') 
                then s[i] := chr(ord(s[i]) + n)
                else s[i] := chr((ord(s[i]) + n)mod 32);
 
      write(s[i])
    end
end.
но ввиду того, что <ord('я') у меня берутся и символы, которые не являются буквами иногда получается на выводе не только набор букв, но и набор букв, содержащий #, и пр.

А так же по поводу дешифровки.
предполагаю, что таким образом он вернет мне обратно значение. Но что-то как-то не очень..

then s[i] := chr(ord(s[i])-n +32)
else s[i] := chr((ord(s[i])-n + 32)mod 32);
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2014, 21:46
Ответы с готовыми решениями:

Шифровка / дешифровка файлов (scrembler)
Здравствуйте есть программа для шифровки и дешифровки файлов , нужно поменять в ней значения key ,...

Шифровка и дешифровка
Составить программы шифровки и дешифровки текстов с помощью ключевой фразы Сначала составим ...

Шифровка/дешифровка
Написать программу шифровки/дешифровки методом биграмм! НА сайте не нашёл &gt;&gt; создал тему!

Шифровка и дешифровка текста с помощью шифровального квадрата
Вот такая задача - Шифровка и дешифровка текста, расположенного в файле с помощью шифровального...

6
32 / 32 / 45
Регистрация: 01.11.2014
Сообщений: 155
Записей в блоге: 4
17.12.2014, 16:27 2
Лучший ответ Сообщение было отмечено Galaxyanin как решение

Решение

Решил написать свой код. Здесь и шифратор и дешифратор. Ключ (кол-во единиц сдвига) можно определять самому.
потратил 26 мин ^_^
Pascal
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
75
76
77
78
uses crt;
var
 i,k,x:integer;
 s:string;
 otvet,d:char;
Begin
 write('Будем шифровать (Ш) или дешифровать (Д)? ');
  readln(otvet);
 if (otvet='Ш') or (otvet='ш') then
  Begin
 {Настройки}
 write('Введите строку: ');
  readln(s);
 write('Введите ключ: ');
  readln(k);
 write('Направление ключа: (П/Л) ');
  readln(otvet);
 if (otvet='П') or (otvet='п') then
  Begin
   for i:=1 to length(s) do
    Begin
     if s[i]<>' ' then
      Begin
       x:=ord(s[i]);
       if x+3>255 then x:=x-32;
       s[i]:=chr(x+k);
      end;
    end;
  end;
 if (otvet='Л') or (otvet='л') then
  Begin
   for i:=1 to length(s) do
    Begin
     if s[i]<>' ' then
      Begin
       x:=ord(s[i]);
       if x-3<224 then x:=x+32;
       s[i]:=chr(x-k);
      end;
    end;
  end;
 end;
if (otvet='Д') or (otvet='д') then
 Begin
   {Настройки}
 write('Введите строку: ');
  readln(s);
 write('Введите ключ: ');
  readln(k);
 write('Направление ключа: (П/Л) ');
  readln(otvet);
  if (otvet='П') or (otvet='п') then
   Begin
   for i:=1 to length(s) do
    Begin
     if s[i]<>' ' then
      Begin
       x:=ord(s[i]);
       if x-3<224 then x:=x+32;
       s[i]:=chr(x-k);
      end;
    end;
  end;
 if (otvet='Л') or (otvet='л') then
  Begin
   for i:=1 to length(s) do
    Begin
     if s[i]<>' ' then
      Begin
       x:=ord(s[i]);
       if x+3>255 then x:=x-32;
       s[i]:=chr(x+k);
      end;
    end;
  end;
 end;
write(s);
end.
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 10
17.12.2014, 16:29  [ТС] 3
Вы определенно молодец, но я все ещё в школе и только начинаю проходить эту тему в условиях очень специфичного учителя информатики
0
32 / 32 / 45
Регистрация: 01.11.2014
Сообщений: 155
Записей в блоге: 4
17.12.2014, 16:32 4
Galaxyanin, ну... я тоже еще школьник)
итак, занимайтесь, не смотря на своего учителя - учебника для базового уровня вполне хватает, мне во всяком случае)
Предупреждаю, что код еще можно оптимизировать
0
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 10
17.12.2014, 16:46  [ТС] 5
Если бы у меня было все прекрасно и идеально, то может быть и имело бы смысл заниматься оптимизацией пока что только обратное.
0
32 / 32 / 45
Регистрация: 01.11.2014
Сообщений: 155
Записей в блоге: 4
17.12.2014, 16:53 6
Galaxyanin, кстати, если вводить заглавные буквы шифровать и дешифровка будет с изменением регистра + все знаки пунктуации тоже будут изменяться. Последнее могу исправить, если необходимо
0
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 10
17.12.2014, 17:00  [ТС] 7
Думаю, не стоит.
Мне пока что без толку вдаваться в мелочи)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2014, 17:00

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Шифровка\Дешифровка текста. Курсак горит(( SOS
Курсовая работа. 1-й курс. Паскаль. Задание: Нужно сделать 2 проги в одной для...

Шифровка и дешифровка текста с помощью заданного шифровального квадрата 8*8 (Turbo -> PABC.NET)
Uses Crt; Type matrix = array of string; Const mask: matrix = ('.x.x..x.', ...

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

шифровка/дешифровка
Помогите пожалуйста. Надо написать прогу, которая шифрует/дешифрует введеный текст. (конкретно мне...

Шифровка и дешифровка текста
Напишите подпрограммы Encode (зашифровать) и Decode (расшифровать), которые получают два параметра...

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


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

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

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