В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
MedinaIsk
MedinaIsk
06.01.2022 12:51 •  Информатика

Вмассиве а[1..n,1..n] определить номера строки и столбца какой-нибудь седловой точки. некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце

Ответ:
Мусора12233334555
Мусора12233334555
28.09.2020 11:53
Const
  n = 6; // число строк
  m = 6; // число столбцов

var
  a: array[1..n, 1..m] of integer;  // основной массив
  Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках
  Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах
  i, j, amin, amax: integer;

begin
  // заполняем массив А случайными числами
  Randomize;
  writeln('Исходный массив');
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := random(100) - 50;
      write(a[i, j]:4);
    end;
    writeln;
  end;
  // Заполняем массив Rext n x 2
  for i := 1 to n do
  begin
    amin := 10000;  //заведомо больше a[i,j]
    amax := -10000; //заведомо меньше a[i,j]
    for j := 1 to m do
    begin
      if amin > a[i, j] then begin
        amin := a[i, j]; Rext[i, 1] := j
      end;
      if amax < a[i, j] then begin
        amax := a[i, j]; Rext[i, 2] := j
      end
    end;
  end;
  // Заполняем массив Cext 2 x m
  for j := 1 to m do
  begin
    amin := 10000;  //заведомо больше a[i,j]
    amax := -10000; //заведомо меньше a[i,j]
    for i := 1 to n do
    begin
      if amin > a[i, j] then begin
        amin := a[i, j]; Cext[1, j] := i
      end;
      if amax < a[i, j] then begin
        amax := a[i, j]; Cext[2, j] := i
      end
    end
  end;
  writeln;
  // Ищем седловые точки
  writeln('*** Седловые точки ***');
  for i := 1 to n do
  begin
    j := Rext[i, 1];
    if Cext[2, j] = i then
      write('[', i, ',', j, '] ')
    else begin
      j := Rext[i, 2];
      if Cext[1, j] = i then
        write('[', i, ',', j, '] ')
    end
  end;
  writeln
end.

Тестовое решение
Исходный массив
  10  25  38  38
  45  32  42  36
 -39  -6   9  48
 -25 -37  40  30

*** Седловые точки ***
[2,2]
0,0(0 оценок)
Ответ:
mertysan
mertysan
28.09.2020 11:53
Const
  N = 5;
var
  i, j: integer;
  a: array[1..N, 1..N] of integer;
  min, max: array[1..N] of integer;
begin
  writeln('Исходный массив: ');
  for i := 1 to N do begin
    for j := 1 to N do begin
      a[i, j] := Random(10);
      write(a[i, j] : 3);
      if (j = 1) or (max[i] > a[i, j]) then max[i] := a[i, j];
      if (i = 1) or (min[j] < a[i, j]) then min[j] := a[i, j];
    end;
    writeln;
  end;
  writeln('Седловые точки: ');
  for i := 1 to N do
    for j := 1 to N do
      if max[i] = min[j] then writeln('[', i, '; ', j, ']');
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?