Определить, является ли данная целочисленная квадратная матрица ортонормированной - PascalABC.NET
Формулировка задачи:
Определить, является ли данная целочисленная квадратная матрица ортонормированной, то есть такой, в которой скалярное произведение каждой пары различных строк равно нулю, а скалярное произведение каждой строки на себя равно единице.
Разбить задачу на подзадачи таким образом, чтобы решение каждой подзадачи описывалось подпрограммой, а основная программа состояла бы из последовательности вызовов подпрограмм. Размеры матриц задать константами.
Вот прога без подпрограмм
Решение задачи: «Определить, является ли данная целочисленная квадратная матрица ортонормированной»
textual
Листинг программы
const
n=2;
var
skal:integer;
o:boolean;
mas:array [1..n,1..n] of integer;
procedure vvod;
var i,j:integer;
begin
writeln('Введите ',n*n,' элементов матрицы:');
for i:=1 to n do
for j:=1 to n do
readln(mas[i,j]);
end;
procedure vis;
var i,j:integer;
begin
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to n do
write(mas[i,j]:4);
writeln;
end;
end;
function alg:integer;
var i,j,k:integer;
begin
o:=true;
i:=1;
repeat
j:=1;
repeat
skal:=0;
for k:=1 to n do
skal:=skal+mas[i,k]*mas[j,k];
if ((i=j) and (skal<>1)) or ((i<>j) and (skal<>0)) then o:=false;
j:=j+1;
until not(o) or (j=n+1);
i:=i+1
until not (o) or (i=n+1);
end;
procedure viv;
begin
if o then writeln ('Ортонормированна')
else writeln ('Не ортонормированна');
end;
begin
vvod;
vis;
alg;
viv;
end.
Объяснение кода листинга программы
Список действий в коде:
- Ввод данных о матрице (размерность и сами значения)
- Вывод исходной матрицы
- Проверка ортонормированности матрицы с помощью алгоритма, основанного на свойстве ортонормированности (используется внутреннее представление матрицы)
- Вывод результата проверки