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

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

Задача

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

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

Нужно найти максимальный элемент матрицы и переставить строки и столбцы так, чтобы этот элемент оказался в позиции $$a_{1,1}$$.

Для этого:

  • сначала заполняем матрицу;
  • находим координаты максимального элемента $$x$$ и $$y$$;
  • меняем местами строку с номером $$y$$ и первую строку;
  • меняем местами столбец с номером $$x$$ и первый столбец;
  • выводим полученную матрицу.

Если максимальных элементов несколько, достаточно, чтобы в левом верхнем углу оказался один из них.

const n = 7;
m = 4;

type
matr = array[1..n, 1..m] of integer;

procedure zapolnenie(var mas: matr);
var
i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to m do
      mas[i, j] := random(9) + 1;
end;

procedure max(const mas: matr; var x, y: integer);
var
i, j: integer;
maxx: integer;
begin
  maxx := mas[1, 1];
  y := 1;
  x := 1;
  for i := 1 to n do
    for j := 1 to m do
      if mas[i, j] > maxx then
      begin
        maxx := mas[i, j];
        y := i;
        x := j;
      end;
end;

procedure vivod(const mas: matr);
var
i, j: integer;
begin
  for i := 1 to n do
  begin
    for j := 1 to m do
      Write(mas[i, j]:5);
    Writeln;
  end;
  Writeln;
end;

procedure vverh(var mas: matr; const y: integer);
var
i, j, c: integer;
begin
  for i := y downto 2 do
    for j := 1 to m do
    begin
      c := mas[i — 1, j];
      mas[i — 1, j] := mas[i, j];
      mas[i, j] := c;
    end;
end;

procedure vlevo(var mas: matr; const x: integer);
var
i, j, c: integer;
begin
  for j := x downto 2 do
    for i := 1 to n do
    begin
      c := mas[i, j — 1];
      mas[i, j — 1] := mas[i, j];
      mas[i, j] := c;
    end;
end;

var
mas: matr;
x, y: integer;

begin
  zapolnenie(mas);
  max(mas, x, y);
  vivod(mas);
  vverh(mas, y);
  vlevo(mas, x);
  vivod(mas);
end.

После выполнения программы максимальный элемент матрицы окажется в левом верхнем углу.



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