Задача. Дана целочисленная таблица размером n×m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.

 

Решение
type
  mas2 = array[1..20, 1..20] of integer;


{процедура заполняет таблицу так, чтобы все ее элементы были различны}
procedure create(var n, m: byte; var a: mas2);
var
  i, j, k: byte; i1: byte;
  B: array[1..2000] of integer;
  L: boolean;
begin
  Write('Введите размеры таблицы: ');
  Readln(n, m);
  for i := 1 to n do
    for j := 1 to m do
    begin
      L := false;
      repeat
        A[i, j] := -450 + random(901);
        if (i = 1) and (j = 1)
          then k := 1	
        else begin
          i1 := 1;
          while (i1 <= k) and not L do
          begin
            L := (b[i1] = a[i, j]);
            i1 := i1 + 1
          end
        end
      until not L;
      if not ((i = 1) and (j = 1)) then k := k + 1;
      b[k] := a[i, j];
    end;
end;

{процедура вывода таблицы на экран}
procedure print(m, n: byte; a: mas2);
var
  i, j: byte;
begin
  for i := 1 to m do
  begin
    writeln;
    for j := 1 to n do
      write(a[i, j]:5);
  end;
  writeln; writeln;
end;

{поиск местонахождения минимального элемента k-й строки}
procedure min(k, m: byte; a: mas2; var r: byte);
var
  j: byte;
begin
  r := 1;
  for j := 2 to m do
    if a[k, j] < a[k, r] then r := j;
end;

var
  n, m: byte; a: mas2;
  imax, jmax: byte; i, k: byte;

begin
  randomize;
  create(n, m, a);
  print(n, m, a);
  min(1, m, a, jmax); imax := 1; {первоначально в качестве искомого
                                  значения берем минимальный элемент первой строки}
  for i := 2 to n do
  begin
    min(i, m, a, k);
    if a[i, k] > a[imax, jmax]
    then begin imax := i; jmax := k end;
  end;
  writeln('Искомый элемент имеет индексы  ',
 		  imax, '  ', jmax, '  и равен   ', a[imax, jmax])
end.

Результат работы программы

Введите размеры таблицы: 10 4

 -107 -155  448  238
 -389  -56 -354  323
 -394   23  309 -154
   90  329   39  240
  -90  -71  340 -164
 -215 -342  297  213
  274  -53 -355 -435
   84  190 -413  101
 -301  218 -387  161
 -376 -292  308   42

Искомый элемент имеет индексы  4  3  и равен   39

Рейтинг ресурсов УралWeb

 

© Шестаков А.П., 2010
Сайт создан в системе uCoz