[delphi - form] - 99 определить является ли целочисленная матрица симметричной относительно вертикальной оси. при отсутствии симметрии заменить элементы на минимальный из них.
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).
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).