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

0 голосов
105 просмотров

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 баллов) | 105 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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. 

(6.2k баллов)
0

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

0

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

0

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

0

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

0

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

0

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

0

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

0

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