Квадратная матрица символьного типа. Транспонировать ее. Вывести на экран элементы, расположенные на побочной диагонали - Turbo Pascal
Формулировка задачи:
Дана квадратная матрица символьного типа. Транспонировать ее. Вывести на экран элементы, расположенные на побочной диагонали.
Решение задачи: «Квадратная матрица символьного типа. Транспонировать ее. Вывести на экран элементы, расположенные на побочной диагонали»
textual
Листинг программы
uses crt; const nmax=10; var a:array[1..nmax,1..nmax] of char; n,i,j:integer; x:char; begin clrscr; randomize; repeat write('Размер матрицы от 2 до ',nmax,' n='); readln(n); until n in [2..nmax]; writeln('Исходная матрица:'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=chr(65+random(26)); write(a[i,j]:2); end; writeln; end; for i:=2 to n do for j:=1 to i-1 do begin x:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=x; end; writeln('Транспонированная матрица'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:2); writeln end; writeln('Элементы побочной диагонали'); for i:=1 to n do write(a[i,n-i+1]:2); readln end.
Объяснение кода листинга программы
- Создаётся переменная
a
, которая представляет собой матрицу символов размером от 2 доnmax
на 1 на 10. - Задаётся начальное значение для переменной
n
, которая будет использоваться для чтения размеров матрицы от пользователя. - Запускается цикл
repeat
, который будет выполняться до тех пор, покаn
не будет введено число от 2 доnmax
. - Внутри цикла
repeat
выводится сообщение с просьбой ввести размер матрицы. - После получения размера матрицы, выводится исходная матрица.
- Запускается вложенный цикл
for
, который проходит по каждой строке матрицы. - Внутри вложенного цикла
for
выводится каждый элемент матрицы. - После вывода элементов строки, выводится символ новой строки (
writeln
). - Запускается ещё один вложенный цикл
for
, который проходит по каждой колонке матрицы. - Внутри этого цикла происходит переворот элементов текущей строки с помощью трёх операций: присваивания значения
x
элементам матрицы, затем присвоения элементам матрицы значения из предыдущей строки и, наконец, присвоения элементам матрицы значения из следующей строки. - После завершения второго цикла
for
, выводится транспонированная матрица. - Запускается ещё один вложенный цикл
for
, который проходит по каждой строке матрицы. - Внутри этого цикла выводится каждый элемент матрицы.
- После вывода элементов строки, выводится символ новой строки (
writeln
). - Выводится сообщение с просьбой ввести элемент матрицы, который нужно вывести на экран.
- После получения элемента, выводится этот элемент.
- Цикл завершается командой
readln
. - Выводится сообщение с просьбой ввести размер матрицы от 2 до
nmax
. - Если введенный размер не соответствует допустимому диапазону, то цикл повторяется.
- Если введенный размер соответствует допустимому диапазону, то цикл завершается командой
readln
.