Как повернуть прямоугольную матрицу на 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д