[Delphi - Form] - 99 Определить является ли целочисленная матрица симметричной относительно вертикальной оси. При отсутствии сим
[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).
Ctrl+A-Выделить док. целиком Ctrl+C-Копировать выдел. файл Ctrl+V-Вставить из буфера обмена копирован./вырезан. фрагмент Ctrl+X-Вырезать выдел. фрагмент