Удалить те строки и столбцы матрицы, в которых значения главной диагонали равны нулю - Pascal ABC
Формулировка задачи:
Дана квадратная матрица порядка n.
Как строки со столбцами удалять из матрицы?
Решение задачи: «Удалить те строки и столбцы матрицы, в которых значения главной диагонали равны нулю»
textual
Листинг программы
var a:array[1..20,1..20] of integer; n,m,i,j,k:integer; begin randomize; write('Введите размер матрицы: '); readln(n); writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(5); write(a[i,j]:3); end; writeln; end; i:=n; while i>=1 do if a[i,i]=0 then begin if i=n then begin n:=n-1; i:=i-1; end else begin for j:=i to n-1 do for k:=1 to n do a[j,k]:=a[j+1,k]; for j:=i to n-1 do for k:=1 to n do a[k,j]:=a[k,j+1]; n:=n-1; i:=i-1; end; end else i:=i-1; writeln('Удаление строк и столбцов с 0 на главной диагонали'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln; end; end.
Объяснение кода листинга программы
- Создается переменная
a
типаarray[1..20,1..20] of integer
, которая представляет собой матрицу размером 20x20. - Задаются три переменные
n
,m
,i
,j
,k
типаinteger
. Они будут использоваться для итерации по матрице и выполнения различных операций. - Выводится сообщение
Введите размер матрицы:
и считывается значение переменнойn
от пользователя. - Выводится сообщение
Исходная матрица
и происходит итерация по матрицеa
от 1 доn
. В каждой итерации заполняются значения матрицы случайными числами от 1 до 5. - После завершения итерации выводится символ новой строки.
- Переменная
i
устанавливается равнойn
и начинается циклwhile
. Цикл выполняется до тех пор, покаi
больше или равно 1. - Внутри цикла
while
проверяется условиеif a[i,i]=0 then
. Если это условие истинно, то выполняется блок кода внутри блокаbegin
. В этом блоке устанавливаются значения матрицыa
путем копирования значений из соседних строк и столбцов. - После выполнения блока
begin
устанавливаются значения переменныхi
иj
на единицу меньше их текущих значений. - Если условие
if i=n then
истинно, то устанавливается значение переменнойi
на единицу меньше и выполняется блок кода внутри блокаbegin
. В этом блоке устанавливаются значения матрицыa
путем копирования значений из соседних строк и столбцов. - После выполнения блока
begin
устанавливаются значения переменныхi
иj
на единицу меньше их текущих значений. - Если условие
else i:=i-1;
истинно, то переменнаяi
уменьшается на 1. - Выводится сообщение
Удаление строк и столбцов с 0 на главной диагонали
. - Выполняется итерация по матрице
a
от 1 доn
. Выводятся значения матрицыa
с помощью функцииwrite
. - После завершения итерации выводится символ новой строки.