Program Shifr;var s1,s2:string; i,n,k,p:integer; key:integer; //ключ шифрования...

0 голосов

Program Shifr;
var s1,s2:string;
i,n,k,p:integer;
key:integer; //ключ шифрования
f1,f2:text;
BEGIN
assign(f1,'Dannie.txt');
assign(f2,'Shifr.txt');
reset(f1);
rewrite(f2);
writeln('Введите ключ шифрования от 1 до 33:');
readln(key);
while Not(Eof(f1)) do
begin
readln(f1,s1);
s2:='';
for i:=1 to length(s1) do
s2:=s2+chr(ord(s1[i])+key);
writeln(f2,s2);
end;
close(f1);
close(f2);
END.
Создать программы шифрации и дешифрации для следующего модифицированного алгоритма Цезаря: ключ шифрования 4 цифры (каждая цифра от 1 до 9), 1 цифра определяет сдвиг 1 симовла шифруемого текста, 2 цифра — 2 символа, 3 цифра — 3 символа, 4 цифра — 4 символа, а для пятого символа снова 1 цифра ключа и т. д.


спросил от Начинающий (125 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Отличник (6.2k баллов)
 
Лучший ответ

Program Shifr;
var    
  s1,s2,alf,key:string;
  i,n, Kod:integer;
  f1,f2:text;
BEGIN
alf:='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
assign(f1,'Dannie.txt'); 
assign(f2,'Shifr.txt'); 
reset(f1);
rewrite(f2);
writeln('Введите четырехзначный ключ шифрования:');
readln(key);
n:=0;
while Not(Eof(f1)) do
  begin
  readln(f1,s1);
  s2:='';
  for i:=1 to length(s1) do
    begin
    Kod:=Pos(s1[i],alf);
    n:=n+1;
    if n>4 then n:=1;
    Kod:=Kod+StrToInt(key[n]);
    if Kod>33 then Kod:=Kod-33;
    if Kod<1 then Kod:=Kod+33;<br>    s2:=s2+alf[Kod];
    end;
  writeln(f2,s2);
  end;
close(f1); 
close(f2); 
END. 

Program DeShifr;
var
  s1,s2,alf,key:string;
  i,n,Kod:integer;
  f1,f2:text;
BEGIN
alf:='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
assign(f1,'Shifr.txt'); 
assign(f2,'DeShifr.txt');
reset(f1);
rewrite(f2);
writeln('Введите четырехзначный ключ шифрования:');
readln(key);
n:=0;
while Not(Eof(f1)) do
  begin
  readln(f1,s1);
  s2:='';
  for i:=1 to length(s1) do
    begin
    Kod:=Pos(s1[i],alf);
    n:=n+1;
    if n>4 then n:=1;
    Kod:=Kod-StrToInt(key[n]);
    if Kod>33 then Kod:=Kod-33;
    if Kod<1 then Kod:=Kod+33;<br>    s2:=s2+alf[Kod];
    end;
  writeln(f2,s2);
  end;
close(f1); 
close(f2); 
END. 

оставил комментарий от Начинающий (125 баллов)

спасибо большое))

оставил комментарий от Отличник (6.2k баллов)

Да погоди, ответ отформатировать надо еще, все в куче пока

оставил комментарий от Отличник (6.2k баллов)

Вот теперь, кажется, все. Не забудь страничку обновить.

оставил комментарий от Начинающий (125 баллов)

:D остроумно про страничку))

оставил комментарий от Отличник (6.2k баллов)

Это не шутка, бывает, пока не обновишь, изменения не видны, старый вариант висит)

оставил комментарий от Отличник (6.2k баллов)

Проверяй, если что не так, то можно будет еще поправить. Потом такой возможности уже не будет.

оставил комментарий от Начинающий (125 баллов)

откуда ты так хорошо знаешь паскаль?

оставил комментарий от Отличник (6.2k баллов)

Ну, люблю программировать, вот и набрался знаний. Но тут на сайте есть монстры покруче меня)))

...