Как повернуть прямоугольную матрицу на 180 градусов вправо? - Free Pascal

Узнай цену своей работы

Формулировка задачи:

как повернуть прямоугольную матрицу на 180 градусов вправо?

Решение задачи: «Как повернуть прямоугольную матрицу на 180 градусов вправо?»

textual
Листинг программы
uses crt;
var a:array[1..20,1..20] of integer;
    m,n,i,j,x:integer;
begin
clrscr;
write('n=');
readln(n);
write('m=');
readln(m);
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    a[i,j]:=10*i+j;
    write(a[i,j]:4);
   end;
  writeln;
 end;
for i:=1 to n div 2 do
for j:=1 to m do
 begin
  x:=a[i,j];
  a[i,j]:=a[n-i+1,m-j+1];
  a[n-i+1,m-j+1]:=x;
 end;
{если кол. строк нечетное, переставим элементы  средней строки}
if odd(n) then
for i:=1 to m div 2 do
 begin
  x:=a[n div 2+1,i];
  a[n div 2+1,i]:=a[n div 2+1,m-i+1];
  a[n div 2+1,m-i+1]:=x;
 end;
writeln('Поворот на 180 градусов:');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
readln
end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • a: массив 20x20 целых чисел,
    • m, n: числа для размера матрицы,
    • i, j, x: вспомогательные переменные для циклов.
  2. Задаются размеры матрицы (числа m и n) с помощью функций readln и clrscr из библиотеки CRT.
  3. Выводится исходная матрица. Для этого используется два вложенных цикла: внешний цикл для строк от 1 до n и внутренний цикл для столбцов от 1 до m. В каждой ячейке матрицы (a[i,j]) вычисляется значение (10*i+j) и выводится на экран с помощью функции write. После каждой строки матрицы выводится символ новой строки (\n) для перехода на следующую строку.
  4. Производится поворот матрицы на 180 градусов вправо. Для этого используется два вложенных цикла: внешний цикл для строк от 1 до n/2 и внутренний цикл для столбцов от 1 до m. Для каждой ячейки в середине матрицы (a[n/2,j]) значения меняются местами с соответствующими ячейками в правой части матрицы (a[n-i+1,m-j+1]). Затем значения в ячейке a[n/2,j] меняются местами с ячейкой a[n/2,m-j+1]. Если количество строк нечетное, то значения в ячейке a[n/2+1,i] меняются местами с ячейкой a[n/2+1,m-i+1].
  5. Выводится повернутая на 180 градусов матрица. Для этого используется два вложенных цикла: внешний цикл для строк от 1 до n и внутренний цикл для столбцов от 1 до m. В каждой ячейке матрицы (a[i,j]) выводится значение с помощью функции write. После каждой строки матрицы выводится символ новой строки (\n) для перехода на следующую строку.
  6. Программа ожидает ввода данных с помощью функции readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы