Определить максимальное из чисел встречающихся в матрице НЕ более одного раза — Pascal(Паскаль)

const n = 10;
VAR
  m: Array[1..n, 1..n] of Integer;
  i, j, k, l, row_max, col_max: Integer;
  count: Integer;
BEGIN
 {Заполнение матрицы случайными целыми числами}
 for i:=1 to n do
  for j:=1 to n do
     m[i,j]:=random(21);
     {Выбираем небольшое максимальное, чтобы было побольше одинаковых
      Аналогично, чтобы одинаковых - то большим}
 {Показ}
 for i:=1 to n do begin
   for j:=1 to n do Write(m[i,j]:5); WriteLn end;
 {Начинаем проверять, самым простым методом}
 col_max:=1;
 row_max:=1;  {Индексы максимального элемента}
 randomize;
 for i:=1 to n do
  for j:=1 to n do
  begin
   {Сначала проверяем, один ли раз встречается}
   count := 1;
   for k:=1 to n do
    for l:=1 to n do
      if  (k<>i) and (l<>j) and (m[k,l] = m[i,j]) then
      begin
       inc(count); Break; {Немедленный выход из цикла -
                           по крайней мере один раз повторяется}
      end;

   if (count =1) and (m[i, j] > m[row_max, col_max]) then
   begin
    row_max := i;
    col_max := j
   end
  end;
  {Первый элемент еужно проверить на повторяемость отдельно:
   может все повторяются}
  count := 1;
  if (row_max = 1) and (col_max = 1) then
  begin
    count:=1;
    for i:=1 to n do
     for j:=1 to n do
      if m[i,j] = m[1,1] then
      begin
       inc(count);
       WriteLn('В массиве нет уникальных элементов');
       Break
      end
  end;
  if count = 1 then begin
   WriteLn('Максимальный из уникальных элементов равен ',m[row_max, col_max]);
   WriteLn('В строке ',row_max,', в колонке ',col_max)
  end;
END.

Leave a Comment

48 − = 44