Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2016, 18:19   #1
Smile189
Пользователь
 
Регистрация: 01.10.2016
Сообщений: 25
По умолчанию Шифровка/Расшифровка

Помогите пожалуйста немного переделать, программа работает, но нужно сделать так, что бы:
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.
Smile189 вне форума Ответить с цитированием
Старый 13.10.2016, 19:21   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
1) режим шифровки и расшифровки был независим от друга
по аналогии
http://programmersforum.ru/showthrea...highlight=case
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифровка и Расшифровка текста sakha_yojia Общие вопросы Delphi 0 26.04.2015 17:25
Шифровка/расшифровка данных Shouldercannon Общие вопросы Delphi 16 09.01.2012 20:33
Шифровка и расшифровка через текстовые файлы в Паскале Novenkaja Помощь студентам 21 25.05.2011 08:32
Шифровка venomdanger Помощь студентам 1 23.12.2010 15:40
Шифровка и расшифровка текста Ayubkhon Общие вопросы Delphi 2 17.06.2010 16:17