Задача(1):
Дано: Строка s1 и ключ.
Получить зашифрованную строку s2! У s2 длина равна длине s1!!!
Вот программа, но она для частного случая, т.к. если k будет не 3 то тогда придется присваивать иксу не ‘а’, а другую букву!
Код
uses crt;
var s:string;
i:byte;
BEGIN
clrscr;
write('Введите строку для шифровки: ');
readln(s);
for i:=1 to length(s) do
else if s[i]='X' then s[i]:='A'
else if s[i]='Y' then s[i]:='B'
else if s[i]='Z' then s[i]:='C'
else if s[i]='x' then s[i]:='a'
else if s[i]='y' then s[i]:='b'
else if s[i]='z' then s[i]:='c'
else s[i]:=chr(ord(s[i])+3);
writeln(s);
readln;
END.
var s:string;
i:byte;
BEGIN
clrscr;
write('Введите строку для шифровки: ');
readln(s);
for i:=1 to length(s) do
else if s[i]='X' then s[i]:='A'
else if s[i]='Y' then s[i]:='B'
else if s[i]='Z' then s[i]:='C'
else if s[i]='x' then s[i]:='a'
else if s[i]='y' then s[i]:='b'
else if s[i]='z' then s[i]:='c'
else s[i]:=chr(ord(s[i])+3);
writeln(s);
readln;
END.
Надо учитывать, что каждой букве соответствует свое число!
Например, A=65, B=66,C=67 и т.д.
Задача(2):
Дано: ключ и s2.
Расшифровать строку s2 и получить (найти) строку s1!
Задача(3):
Дано: s2, ключ неизвестен( ключ находится в пределах [2;26]
Расшифровать строку s2.В файле out.txt будет 26 строк, рядом со строками будет ключ!
Задача(4)
Дана строка s1 и плавающий ключ. Зашифровать строку s1 получить строку s2!
Плавающий ключ- это ключ который не постоянен для каждой буквы! Т.е каждая буква имеет свой определенный ключ!
Т.Е. надо сделать следующее:
Файл shi1.dat-надо расшифровать(т.е в программе надо указать будет этот файл (или путь к нему))
Файл f3.dat-надо расшифровать(т.е в программе надо указать будет этот файл (или путь к нему))
Файл f1.dat-надо зашифровать двумя способами(это задача 1 и задача4)(т.е в программе надо указать будет этот файл (или путь к нему))
Вот я составил эти программы, но они работают неправильно!Пожалуйста исправьте ошибки!



Код
procedure p1;
var s,s2:string;
k,i:byte;
begin
assign(input,'f1.dat');reset(input);
assign(output,'f1_out.dat');rewrite(output);
readln(s);readln(k);
s2:='';
for i:=1 to length(s) do
begin
if ord(s[i])+k<255 then
s2:=s2+chr(ord(s[i])+k) else
s2:=s2+chr(ord(s[i])+k-254);
end;
writeln(s2);
close(input);close(output);
end;
procedure p2;
var s,s2:string;
k,i:byte;
begin
assign(input,'shi1.dat');reset(input);
assign(output,'shi1_out.dat');rewrite(output);
readln(s);
readln(k);
s2:='';
for i:=1 to length(s) do begin
if ord(s[i])-k>0 then
s2:=s2+chr(ord(s[i])-k) else
s2:=s2+chr(ord(s[i])-k+254);
end;
writeln(s2);
close(input);close(output);
end;
procedure p3;
var a:array[1..26] of string;
s:string;
i,k:byte;
begin
assign(input,'f3.dat');reset(input);
assign(output,'f3_out.dat');rewrite(output);
readln(s);
for i:=1 to 26 do a[i]:='';
for k:=1 to 26 do
for i:=1 to length(s) do
begin
if ord(s[i])-k>0 then
a[k]:=a[k]+chr(ord(s[i])-k) else
a[k]:=a[k]+chr(ord(s[i])-k+254);
end;
for k:=1 to 26 do
writeln(a[k],' ',k);
close(input);close(output);
end;
procedure p4;
var a:array[1..26] of string;
b:array[1..255] of integer;
code:integer;
s,st:string;
i,k:byte;
begin
assign(input,'f4.dat');reset(input);
assign(output,'f4_out.dat');rewrite(output);
readln(s);
readln(st);
k:=length(st);
for i:=1 to k do val(st[i],b[i],code);
st:='';
for i:=1 to k do
begin
if ord(s[i])+b[i]<255 then
st:=st+chr(ord(s[i])+b[i]) else
st:=st+chr(ord(s[i])+b[i]-254);
end;
writeln(st);
close(input);close(output);
end;
BEGIN
p1;
p2;
p3;
p4;
END.
var s,s2:string;
k,i:byte;
begin
assign(input,'f1.dat');reset(input);
assign(output,'f1_out.dat');rewrite(output);
readln(s);readln(k);
s2:='';
for i:=1 to length(s) do
begin
if ord(s[i])+k<255 then
s2:=s2+chr(ord(s[i])+k) else
s2:=s2+chr(ord(s[i])+k-254);
end;
writeln(s2);
close(input);close(output);
end;
procedure p2;
var s,s2:string;
k,i:byte;
begin
assign(input,'shi1.dat');reset(input);
assign(output,'shi1_out.dat');rewrite(output);
readln(s);
readln(k);
s2:='';
for i:=1 to length(s) do begin
if ord(s[i])-k>0 then
s2:=s2+chr(ord(s[i])-k) else
s2:=s2+chr(ord(s[i])-k+254);
end;
writeln(s2);
close(input);close(output);
end;
procedure p3;
var a:array[1..26] of string;
s:string;
i,k:byte;
begin
assign(input,'f3.dat');reset(input);
assign(output,'f3_out.dat');rewrite(output);
readln(s);
for i:=1 to 26 do a[i]:='';
for k:=1 to 26 do
for i:=1 to length(s) do
begin
if ord(s[i])-k>0 then
a[k]:=a[k]+chr(ord(s[i])-k) else
a[k]:=a[k]+chr(ord(s[i])-k+254);
end;
for k:=1 to 26 do
writeln(a[k],' ',k);
close(input);close(output);
end;
procedure p4;
var a:array[1..26] of string;
b:array[1..255] of integer;
code:integer;
s,st:string;
i,k:byte;
begin
assign(input,'f4.dat');reset(input);
assign(output,'f4_out.dat');rewrite(output);
readln(s);
readln(st);
k:=length(st);
for i:=1 to k do val(st[i],b[i],code);
st:='';
for i:=1 to k do
begin
if ord(s[i])+b[i]<255 then
st:=st+chr(ord(s[i])+b[i]) else
st:=st+chr(ord(s[i])+b[i]-254);
end;
writeln(st);
close(input);close(output);
end;
BEGIN
p1;
p2;
p3;
p4;
END.
Всем заранее спасибо!!!