1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.7 Упр.17 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 3.7 Упр.17 ГДЗ Семакин 10 класс (Информатика)

Задача

Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 17. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером n х m напечатать индексы всех ее седловых точек. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-7/17 98

Подробный ответ

Седловой точкой матрицы называется элемент, который одновременно:

  • является наименьшим в своей строке и наибольшим в своём столбце;
  • или является наибольшим в своей строке и наименьшим в своём столбце.

Чтобы найти все такие элементы, удобно сначала для каждой строки определить её минимум и максимум, а затем для каждого столбца — его минимум и максимум. После этого проверяем каждый элемент матрицы по двум условиям.

var
  n, m, i, j: integer;
const
  n = 4;
  m = 6;
var
  a: array[1..n, 1..m] of integer;
  Rext: array[1..n, 1..2] of integer;
  Cext: array[1..2, 1..m] of integer;
  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;

  for i := 1 to n do
  begin
    amin := 10000;
    amax := -10000;
    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;

  for j := 1 to m do
  begin
    amin := 10000;
    amax := -10000;
    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.

Программа выводит исходную матрицу, затем находит все её седловые точки и печатает их индексы.

Ответ: программа, находящая и выводящая индексы всех седловых точек матрицы.



Общая оценка
4.4 / 5
Другие учебники
Другие предметы