Вот решил сделать в Delphi Но почему-то выводит неправильный результат в форму, либо обрезает, либо выдаёт в не той кодировке Чувствуется где-то ошибка в выводе Подскажите
{ поворот матрицы } procedure T(var res: matrix); var i, j: integer; mx: matrix; begin mx := res; for i := 1 to n do for j := 1 to n do res[j, n - i + 1] := mx[i, j]; end;
{ зашифровка текста } procedure EncodeText(const s: string; const mask: matrix; var mx: matrix); var i, j, count: integer; masked: matrix; begin for i := 1 to n do mx[i]:=#0;
{ Заполнение матрицы mx строками по N пробелов } for i := 1 to n do for j := 1 to n do mx[i] := mx[i]+ '_';
masked := mask; count := 1; while count <= length(s) do begin
for i := 1 to n do for j := 1 to n do if masked[i, j] = 'x' then begin mx[i][j] := s[count]; inc(count) end; T(masked);
end; end;
{расшифровка текста} function DecodeText(const mask, encoded: matrix): string; var s: string; i, j, count: integer; masked: matrix; begin
masked := mask; count := 0; s := ' '; while length(s) < n*n do begin for i := 1 to n do for j := 1 to n do if masked[i, j] = 'x' then s := s + encoded[i, j]; T(masked); end; DecodeText := s;
end; var i: integer; begin memo1.Lines.Clear; st:=edit2.text; EncodeText(st, mask, encoded); for i := 1 to 8 do begin memo1.lines.add(encoded[i]); end; edit1.text:=DecodeText(mask, encoded); end;
procedure TForm1.Button2Click(Sender: TObject); begin edit2.Text:=''; end;
procedure TForm1.Button3Click(Sender: TObject); begin form2.showmodal; end;
procedure TForm1.Button4Click(Sender: TObject); begin form3.showmodal; end;
procedure TForm1.Button5Click(Sender: TObject); begin memo1.Clear(); edit1.Text:=''; end;
end.
Сообщение отредактировано: volvo - 5.04.2010 15:32