Вопрос задан 11.03.2021 в 14:57. Предмет Информатика. Спрашивает Пак Сергей.

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

вертикальной оси. При отсутствии симметрии заменить элементы на минимальный из них.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Трусова Александра.
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).

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот пример кода на языке Delphi, который выполняет задачу определения симметричности матрицы относительно вертикальной оси и заменяет элементы, если симметрия отсутствует:

delphi
procedure CheckAndReplaceMatrix(var matrix: array of array of Integer); var numRows, numCols, i, j: Integer; symmetric: Boolean; minValue: Integer; begin numRows := Length(matrix); numCols := Length(matrix[0]); symmetric := True; // Проверяем симметричность матрицы for i := 0 to numRows - 1 do begin for j := 0 to numCols - 1 do begin if matrix[i][j] <> matrix[i][numCols - j - 1] then begin symmetric := False; Break; end; end; if not symmetric then Break; end; // Если матрица не симметрична, заменяем элементы на минимальный из них if not symmetric then begin minValue := matrix[0][0]; for i := 0 to numRows - 1 do begin for j := 0 to numCols - 1 do begin if matrix[i][j] < minValue then minValue := matrix[i][j]; end; end; for i := 0 to numRows - 1 do begin for j := 0 to numCols - 1 do begin matrix[i][j] := minValue; end; end; end; end;

Вы можете вызвать эту процедуру, передав в неё вашу целочисленную матрицу (представленную в виде двумерного массива), и она проверит, является ли матрица симметричной относительно вертикальной оси. Если симметрия отсутствует, элементы матрицы будут заменены на минимальное значение.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос