С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 0 / 0
Регистрация: 27.03.2012
Сообщений: 77

Шифрование перестановкой

04.10.2012, 21:41. Показов 1769. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите пожалуйста, никак не могу понять, что не так с программой постоянно пишет, что цифры в ключе должны быть различны. и раскодировку неверно выполняет.((
условие на картинке, приложенной к сообщению, а вот сама программа:
Delphi
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,windows;
Var
 Text,Text_1,Text_2,text_3,S:String;
 Textmatr:Array[1..6,1..4] of Char;
 i,j,q,k,kolsimvolov:integer;
 key1:array[1..6] of Byte;
 key2:array[1..4] of Byte;
 p,t,m:Boolean;
Begin
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
//-------------------------------------------------------------
  repeat
    Write('Введи текст для кодировки: ');
    Readln(Text);
    kolsimvolov:=Length(text);
    m:=True;
    if kolsimvolov>6*4 then m:=False;
     if not(m) then writeln('количество символов не должно превышать 24');
  until m;
 //-------------------------------------------------------------
  If (kolsimvolov mod 24)<> 0 then  //если кол-во символов текста не кратно кол-ву символов в блоке дополняем его пробелами
      begin
        text:=text+' ';
        Inc(kolsimvolov);
      end;
 //------------------------------------------------------------
  Repeat
    Writeln('Введите ключ1');
    for i:=1 to 6 do
    Readln(key1[i]);
    p:=true;
    for i:=1 to 5 do
    begin
       for q:=2 to 6 do
       if (key1[i]=key1[q]) then p:=false
    end;
    If Not(p) then writeln('Все символы должны быть различными!');
  Until  p;
 //------------------------------------------------------------- 
  Repeat
    Writeln('Введите ключ2');
    for i:=1 to 4 do
    Readln(key2[i]);
    t:=true;
    for i:=1 to 3 do
    begin
       for q:=2 to 4 do
       if (key2[i]=key2[q]) then t:=false
    end;
       If Not(t) then writeln('Все символы должны быть различными!');
  Until  t;
  Writeln;
 //------------------------------------------------------
 For i:=1 to 6 do
  For j:=1 to 4 do
   Textmatr[key1[i],j]:=Text[(i-1)*4+j];
   Writeln('  k1\k2      1        2        3        4');
 For i:=1 to 6 do
  begin
    Write('    ',i,'    ');
    For j:=1 to 4 do
    write('    ',textmatr[i,j],'    ');
    Writeln;
  end;
 //------------------------------------------------------
 Text_1:='';
 For j:=1 to 4 do
  for i:=1 to 6 do
  begin
    S:=textmatr[i,key2[j]];
    Text_1:=Text_1+S;
  end;
 Writeln('Закодированный текст:',' ',text_1);
 //-------------------------------------------------------
 Text_2:='';
 For j:=1 to 4 do
  begin
    S:=Copy(Text_1,(key2[j]-1)*6+1,6);
    Text_2:=Text_2+S;
  end;
 Text_3:='';
 For i:=1 to 6 do
  For j:=1 to 4 do
   begin
     S:=Copy(Text_2,(j-1)*6+key1[i],1);
     Text_3:=Text_3+S;
   end;
 Writeln('Раскодированный текст:',' ',Text_3);
//-------------------------------------------------------
 Writeln;
 Readln;
End.
Миниатюры
Шифрование перестановкой  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2012, 21:41
Ответы с готовыми решениями:

Шифрование перестановкой букв
таблицы простых шифрующих процедур перестановки букв в сообщении. секретом (ключом) здесь служит размер страницы. например ВЫСТУПАЙТЕ...

Шифрование перестановкой. Матрица из 4 столбцов
Подскажите, в чем ошибка? смысл заключается в том, что нужно написать программу и указать кол-во столбцов и строк в матрице не в const, а...

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

1
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
04.10.2012, 23:03
Насчёт ключа нужно писать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  Repeat
    Writeln('Введите ключ1');
    for i:=1 to 6 do
    Readln(key1[i]);
    p:=true;
    for i:=1 to 5 do
    for q:=i+1 to 6 do //Здесь смотрите исправление !!!!!!!!!!!!!!!!
    if (key1[i]=key1[q]) then 
    Begin
       p:=false;
       Break; //Дальше проверять нет смысла
    End;
    If Not p then writeln('Все символы должны быть различными!');
  Until  p;
Соответственно для второго ключа так же.

Добавлено через 28 минут
Вот это ещё исправил:
Delphi
1
2
  If (kolsimvolov mod 24)<> 0 then  //если кол-во символов текста не кратно кол-ву символов в блоке дополняем его пробелами
     text:=text+StringOfChar(' ',24-kolsimvolov);
Хотя это и не должно было влиять при заданном тексте. Там 24 символа.
Запустил. Всё нормально закодировало и раскодировало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.10.2012, 23:03
Помогаю со студенческими работами здесь

Составить программу, шифрующую исходный текст перестановкой
Составить программу, шифрующую исходный текст перестановкой с помощью таблицы. Строковый тип данных. Обработка строк.

Определить число, полученное перестановкой разрядов десятков и сотен исходного числа
Помогите решить задачу в Delphi Задача Дано натуральное четырехзначное число N. Определить число, полученное перестановкой...

Найти число, образованное перестановкой первой и второй, третьей и четвертой цифр заданного числа
Заданное четырехзначное число. Найти число , образованное при перестановке первой и второй , третьей и четвертой цифр заданного числа....

Создать программу шифровки/дешифровки (шифрование перестановкой)
создать программу шифровки дешефровки вот задание открытый текст &quot;шифрование_перестановкой&quot;.ключ правило перестановки: группы...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru