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

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

Задача

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

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

Нужно найти наибольший элемент среди элементов главной и побочной диагоналей квадратной матрицы нечётного порядка и поменять его местами с центральным элементом матрицы.

Центральный элемент находится в позиции $$\left(\frac{n+1}{2}, \frac{n+1}{2}\right).$$

Просматриваем все строки матрицы. Для каждого элемента главной диагонали $$a[i,i]$$ и побочной диагонали $$a[i,n-i+1]$$ сравниваем его с текущим максимумом. Если найден больший элемент, запоминаем его координаты.

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

const nmax = 101;
var
  a: array[1..nmax, 1..nmax] of longint;
  n, i, j, maxi, maxj, v: longint;
begin
  repeat
    write(‘Введите нечётное n < ‘, nmax, ‘: ‘);
    readln(n);
    if not odd(n) then
      writeln(‘n должно быть нечётно’);
    if n > nmax then
      writeln(‘n должно быть меньше ‘, nmax);
  until (odd(n) and (n < nmax));

  writeln(‘Ввод матрицы’);
  for i := 1 to n do
    for j := 1 to n do
    begin
      write(‘a[‘, i, ‘,’, j, ‘] = ‘);
      readln(a[i, j]);
    end;

  maxi := 1;
  maxj := 1;
  for i := 1 to n do
  begin
    if a[i, i] > a[maxi, maxj] then
    begin
      maxi := i;
      maxj := i;
    end;
    if a[i, n — i + 1] > a[maxi, maxj] then
    begin
      maxi := i;
      maxj := n — i + 1;
    end;
  end;

  v := a[maxi, maxj];
  a[maxi, maxj] := a[(n + 1) div 2, (n + 1) div 2];
  a[(n + 1) div 2, (n + 1) div 2] := v;

  writeln(‘После обработки матрица приняла следующий вид:’);
  for i := 1 to n do
  begin
    for j := 1 to n do
      write(a[i, j]:6);
    writeln;
  end;
end.

Ответ: программа находит наибольший элемент на главной или побочной диагонали и меняет его с центральным элементом матрицы.



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