Что-то я не совсем понял, зачем такое имя переменной использовать (ведь и так по умолчанию подразумевается этот модуль). Программа запустилась, но теперь ошибка динамическая, всё равно ничего не получается!
Вот эта программа на Паскале работает:
Код:
uses CRT;
const ij: array[1..8,1..8] of Char =
(('Б', 'б', 'Н', 'н', 'Е', 'е', 'О', 'о'),
('Ь', 'ь', 'Г' ,'г', '3', 'з', 'Й', 'й'),
('М', 'м', 'С', 'с', 'У', 'у', 'X', 'х'),
('Ч', 'ч', 'Щ', 'щ', 'Ъ', 'ъ', 'Ю', 'ю'),
('А', 'а', 'Д', 'д', 'Р', 'р', 'Л', 'л'),
('В', 'в', 'Ж' ,'ж', 'и', 'и', 'К', 'к'),
('П', 'п', 'Т', 'т', 'Ф', 'ф', 'Х', 'х'),
('Ш', 'ш', 'Ы', 'ы', 'Э', 'э', 'Я', 'я'));
Marks: set of char = ['.', ',', '!', '?', ':', ';', '(', ')', '"', 'ё', 'Ё', '-'];
var
Text: String; k: Integer;
function Encode(c: Char): Char;
var
i,j: Integer;
begin
for i:=1 to 8 do
for j:=1 to 8 do
if (c = ij[i,j]) then
begin
if (i <> 8)
then Encode := ij[i+1,j]
else Encode := ij[1,j];
end;
if (c in Marks) then Encode := c;
end;
function Decode(c: Char): Char;
var
i,j: Integer;
begin
for i:=1 to 8 do
for j:=1 to 8 do
if (c = ij[i,j]) then
begin
if (i <> 1)
then Decode := ij[i-1,j]
else Decode := ij[8,j];
end;
if (c in Marks) then Decode := c;
end;
begin
Write('Исходный текст: ');
ReadLn(Text);
WriteLn;
WriteLn;
WriteLn;
for k := 1 to Length(Text) do Text[k] := Encode(Text[k]);
WriteLn('Зашифрованный текст: ', Text);
for k := 1 to Length(Text) do Text[k] := Decode(Text[k]);
WriteLn('Расшифрованный текст: ', Text);
Readln;
end.
lmikle: Ну чё, самый упорный? Тегами пользуйся, блин!!!
И ещё что с Result, что с именем функции получается одно и тоже!
|