[delphi - form] - 99 определить является ли целочисленная матрица симметричной относительно вертикальной оси. при отсутствии симметрии заменить элементы на минимальный из них.

olgabogomolova123 olgabogomolova123    3   02.09.2019 12:30    3

Ответы
таня1966 таня1966  26.08.2020 13:46
Unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  N:byte;
  A:array[1..256,1..256] of shortint;
implementation

{$R *.dfm}

Function S4(A:shortint):String;
Begin
result:=IntToStr(A);
For A:= 1 to 4-Length(result) do
    result:=' '+result;
End;

procedure TForm1.Button1Click(Sender: TObject);
Var
   i,j:byte;
   S:string;
begin
Randomize;
N:=StrToInt(Edit1.Text);
ListBox1.Clear;
For i:= 1 to N do
    Begin
    S:='';
    For j:= 1 to N do
        Begin
        A[i,j]:=random(256)-128;
        S:=S+S4(A[i,j])+' '
        End;
    ListBox1.Items.Add(S)
    End;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
   M,i,j,iMin,jMin:byte;
   B:boolean;
   S:string;
begin
M:=N div 2;
B:=true;
For i:= 1 to N do
    For j:= 1 to M do
        if A[i,j] <> A[i,N-j+1] then B:=false;
if Not B then
   Begin
   iMin:=1;
   jMin:=1;
   For i:= 1 to N do
       For j:= 1 to N do
           if A[i,j] < A[iMin,jMin] then
              Begin
              iMin:=i;
              jMin:=j;
              End;
   ListBox1.Clear;
   For i:= 1 to N do
       Begin
       S:='';
       For j:= 1 to N do
           Begin
           A[i,j]:=A[iMin,jMin];
           S:=S+S4(A[i,j])+' '
           End;
       ListBox1.Items.Add(S)
       End;
   End
end;

end.

Для красивого вывода матрицы на форме стоит моноширинный шрифт Courier New(Шрифт можно изменить так: выбрать объект(например, ListBox1), далее найти свойство Font → Name, и изменить шрифт на нужный). Размер шрифта на Label1 = 13(Label1.Size = 13).

[delphi - form] - 99 определить является ли целочисленная матрица симметричной относительно вертикал
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика