[Delphi - Form] - 99 Определить является ли целочисленная матрица симметричной...

0 голосов
97 просмотров

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


Информатика (33 баллов)
оставил комментарий Отличник (6.6k баллов)

Нельзя сюда выложить проект целиком - как вариант, можно код программы, и скрин формы

оставил комментарий (33 баллов)

Давай так тогда

Дан 1 ответ
0 голосов
Отличник (6.6k баллов)
 
Правильный ответ

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).


image
...