Показать сообщение отдельно
  #6  
Старый 16.02.2019, 06:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, полный код писать лень.
Так что я тебе собственно функции напишу, а уж визуальную обвязку сделаешь сам.
Код:
type
  TMatrixIndex = record
    C, R : Integer;
  end;

var
  A : Array [1..9,1..9] Of Integer;

// возвращает координаты макс элемента
function GetMaxElementCR : TMatrixIndex
var
  I, J : Integer;
begin
  Result.C := 1;
  Result.R := 1;
  For I := 1 To 9 Do
    For J := 1 To 9 Do
      If A[I,J] > A[Result.C,Result.R] Then
        Begin
           Result.C := I;
           Result.R := J;
        End;
end;

// Делает 10 замен макс элемента на 0
function ReplaceMaxbyZero : Boolean;
var
  I : Integer;
  Idx : TMatrixIndex;
begin
  Result := True;
  For I := 1 To 10 Do
    Begin
      Idx := GetMaxElementCR;
      Result := A[Idx.C,Idx.R] > 0;
      If Result 
        Then  A[Idx.C,Idx.R] := 0
        Else Break;
    End;
end;
Функция ReplaceMaxbyZero вернет True если были сделаны все 10 замен или False, если меньше.

ЗЫ. Там где-то в начале было что-то про исключение 1й и последний строк из замены. Если это нужно, то тогда строка 17 должна выглядеть так:
Код:
    For J := 2 To 8 Do
Ответить с цитированием