P.S. Спасибо всем кто откликнется!
{
Шифровальщик
Программа читает файл s и записывает результат в s1
}
function getnum(c: char): integer;
var
n: integer;
begin
case c of
'0': n := 0;
'1': n := 1;
'2': n := 2;
'3': n := 3;
'4': n := 4;
'5': n := 5;
'6': n := 6;
'7': n := 7;
'8': n := 8;
'9': n := 9;
else
n := -1;
end;
getnum := n;
end;
const
N1 = 10; { максимальное количество строк в файле }
N2 = 2; { количество алфавитов }
var
f,f1: text;
s,n,s1: string;
i,j,k,l,m: integer;
c: integer; { счётчик пизиции в строке кода }
w : array [1..N1] of string; { строки }
w1 : array [1..N1] of string; { строки }
abc : array [1..N2] of string; { алфавиты }
begin
abc[1] := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
abc[2] := 'abcdefghijklmnopqrstuvwxyz';
writeln(''); writeln(' *** Шифровка методом Гронсфельда ***');
{
write('Имя файла: '); readln(s); write('Цифровой ключ (4 или меньше цифры ): '); readln(n);
}
s := 'C:\Work4\1.dat';
s1 := 'C:\Work4\2.dat';
n := '2718';
assign(f,s); assign(f1,s1);
reset(f); rewrite(f1);
i := 1;
{ читаем файл }
while not EOF(f) and (i<=N1) do begin
readln(f,w[i]); w1[i]:=w[i];
inc(i);
end;
{ кодируем }
{ 1-й цикл - по строкам из файла }
{ 2-й цикл - по элементам в строке из файла }
{ 3-й цикл - по алфавитам }
{ 4-й цикл - по элементам алфавита }
c := 1;
for i := 1 to N1 do if ord(w[i][0])<>0 then
for j := 1 to (ord(w[i][0])+1) do
for k := 1 to N2 do
for l := 1 to (ord(abc[k][0])+1) do begin
if abc[k][l]=w[i][j] then begin
m := l+getnum(n[c]); inc(c); if c>ord(n[0]) then c := 1;
if m>ord(abc[k][0]) then m := m-ord(abc[k][0]);
w1[i][j] := abc[k][m];
end;
end;
writeln('');
for i:=1 to N1 do begin
writeln(w[i]);
writeln(w1[i]);
end;
for i := 1 to N1 do begin
for j := 1 to ord(w1[i][0]) do write(f1,w1[i][j]);
writeln(f1,'');
end;
writeln('Нажмите Enter');
read(s);
end.
{
Дешифратор
Программа читает файл s и записывает результат в s1
}
function getnum(c: char): integer;
var
n: integer;
begin
case c of
'0': n := 0;
'1': n := 1;
'2': n := 2;
'3': n := 3;
'4': n := 4;
'5': n := 5;
'6': n := 6;
'7': n := 7;
'8': n := 8;
'9': n := 9;
else
n := -1;
end;
getnum := n;
end;
const
N1 = 10; { максимальное количество строк в файле }
N2 = 2; { количество алфавитов }
var
f,f1: text;
s,n,s1: string;
i,j,k,l,m: integer;
c: integer; { счётчик пизиции в строке кода }
w : array [1..N1] of string; { строки }
w1 : array [1..N1] of string; { строки }
abc : array [1..N2] of string; { алфавиты }
begin
abc[1] := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
abc[2] := 'abcdefghijklmnopqrstuvwxyz';
writeln(''); writeln(' *** Шифровка методом Гронсфельда ***');
{
write('Имя файла: '); readln(s); write('Цифровой ключ (4 или меньше цифры ): '); readln(n);
}
s := 'C:\Work4\2.dat';
s1 := 'C:\Work4\3.dat';
n := '2718';
assign(f,s); assign(f1,s1);
reset(f); rewrite(f1);
i := 1;
{ читаем файл }
while not EOF(f) and (i<=N1) do begin
readln(f,w[i]); w1[i]:=w[i];
inc(i);
end;
{ кодируем }
{ 1-й цикл - по строкам из файла }
{ 2-й цикл - по элементам в строке из файла }
{ 3-й цикл - по алфавитам }
{ 4-й цикл - по элементам алфавита }
c := 1;
for i := 1 to N1 do if ord(w[i][0])<>0 then
for j := 1 to (ord(w[i][0])+1) do
for k := 1 to N2 do
for l := 1 to (ord(abc[k][0])+1) do begin
if abc[k][l]=w[i][j] then begin
m := l-getnum(n[c]); inc(c);
if c>ord(n[0]) then c := 1;
if m<1 then m := m+ord(abc[k][0]);
w1[i][j] := abc[k][m];
end;
end;
writeln('');
for i:=1 to N1 do begin
writeln(w[i]);
writeln(w1[i]);
end;
for i := 1 to N1 do begin
for j := 1 to ord(w[i][0]) do write(f1,w1[i][j]);
writeln(f1,'');
end;
writeln('Нажмите Enter');
read(s);
end.
Сообщение отредактировано: MultiBlock -