Как повернуть прямоугольную матрицу на 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.
Объяснение кода листинга программы
- Объявлены переменные:
- a: массив 20x20 целых чисел,
- m, n: числа для размера матрицы,
- i, j, x: вспомогательные переменные для циклов.
- Задаются размеры матрицы (числа m и n) с помощью функций readln и clrscr из библиотеки CRT.
- Выводится исходная матрица. Для этого используется два вложенных цикла: внешний цикл для строк от 1 до n и внутренний цикл для столбцов от 1 до m. В каждой ячейке матрицы (a[i,j]) вычисляется значение (10*i+j) и выводится на экран с помощью функции write. После каждой строки матрицы выводится символ новой строки (\n) для перехода на следующую строку.
- Производится поворот матрицы на 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].
- Выводится повернутая на 180 градусов матрица. Для этого используется два вложенных цикла: внешний цикл для строк от 1 до n и внутренний цикл для столбцов от 1 до m. В каждой ячейке матрицы (a[i,j]) выводится значение с помощью функции write. После каждой строки матрицы выводится символ новой строки (\n) для перехода на следующую строку.
- Программа ожидает ввода данных с помощью функции readln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д