Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.10.2016, 15:33
Smile188 Smile188 вне форума
Прохожий
 
Регистрация: 02.10.2016
Сообщения: 18
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию программа в которой нужно реализовать режим шифровки расшифровки

Помогите пожалуйста немного переделать, программа работает, но нужно сделать так, что бы:
1) режим шифровки и расшифровки был независим от друга
2)при вводе строки кол-во символов должно быть кратно ключу , иначе нужно повторить ввод
__________________________________________________ _______

вот сама задача:

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

Входными данными программы должны быть:
- для режима шифрования: строка текста и ключ, указывающий раз-
мер блока и порядок перестановки в пределах этого блока;
-для режима расшифровки: закрытый текст и ключ, указывающий
размер блока и порядок перестановки в пределах этого блока.
Выходными данными являются:
-для режима шифрования: закрытый текст;
-для режима расшифровки: открытый текст.
Используемые переменные:
– s, r – строки открытого и закрытого текста соответственно;
– len – длина текстовой строки;
– a – массив, содержащий числа, определяющие порядок перестановки;
– i, j, v – счетчики циклов и вспомогательная переменная целого типа;
– key – размер блока.

Пример : Открытый текст: "ШИФРОВАНИЕ_ПЕРЕСТАНОВКОЙ".
Ключ (правило перестановки): группы из 8 букв с порядковыми номерами
1, 2, ..., 8 переставить в порядок 3-8-1-5-2-7-6-4.
Шифртекст: "ФНШОИАВР_СИЕЕЕРПННТВАОКО".




Код:
program Project1;

{$APPTYPE CONSOLE}



uses
windows,
SysUtils;

const n=30; 
var a,b:array[1..n] of integer;
s,s1,s2,r,ch:string; 
i, j, p, key,k:integer; 
m:set of byte; 
c:char;


begin 
SetConsoleCP(1251); 
SetConsoleOutputCP(1251); 

r:='';
repeat 

writeln('Выберите действие'); 
writeln('1-зашифровать текст');
writeln('2-расшифровать текст'); 
writeln('другое - выход'); 
readln(c); 
case c of 
'1':begin

writeln('Введите текст для шифрования: '); 
readln(s); 
repeat 
write('Введите количество цифр в ключе от 2 до ',n,' key= ');
readln(ch); 
val(ch,key,k); 
until (k=0)and(key in [1..n]); //если число и в интервале 1..n 
while length(s) mod key<>0 do s:=s+' '; 
writeln('Введите ключ из неповторяющихся чисел от 1 до ',key,' : ');
m:=[]; 
for i:=1 to key do 
begin 
repeat 
write('a[',i,']=');
readln(ch); 
val(ch,p,k); 
until(k=0)and(p in [1..key])and not(p in m); 
a[i]:=p; 
m:=m+[p];
end; 
i:=1; 
while i<=length(s)-key+1 do 
begin 
s1:=copy(s,i,key);
s2:=''; 
for j:=1 to key do 
s2:=s2+s1[a[j]]; 
r:=r+s2;
i:=i+key; 
end; 
for i:=length(r) downto 1 do 
if r[i]=' ' then delete(r,i,1);
writeln('Зашифрованный текст: '); 
writeln(r); 
write('Нажмите Enter'); 
readln;
end; 
'2':begin 

if r='' then writeln('Зашифрованный текст еще не создан, вернитесь к пункту 1')
else 
begin 
//создадим ключ для дешифровки 
for i:=1 to key do
begin 
for j:=1 to key do 
if a[j]=i then b[i]:=j
end; 
s:=r; 
while length(s) mod key<>0 do s:=s+' ';
r:=''; 
i:=1; 
while i<=length(s)-key+1 do
begin 
s1:=copy(s,i,key);
s2:=''; 
for j:=1 to key do
s2:=s2+s1[b[j]]; 
r:=r+s2;
i:=i+key;
end;
for i:=length(r) downto 1 do
if r[i]=' ' then delete(r,i,1);
writeln('Расшифрованный текст');
writeln(r);
end;
write('Нажмите Enter');
readln;
end; 
else
begin

writeln('Программа завершена');
exit;
end;
end;
until not(c in ['1','2']);
End.

Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter