Определить, является ли данная целочисленная квадратная матрица ортонормированной - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Определить, является ли данная целочисленная квадратная матрица ортонормированной, то есть такой, в которой скалярное произведение каждой пары различных строк равно нулю, а скалярное произведение каждой строки на себя равно единице. Разбить задачу на подзадачи таким образом, чтобы решение каждой подзадачи описывалось подпрограммой, а основная программа состояла бы из последовательности вызовов подпрограмм. Размеры матриц задать константами.
Листинг программы
  1. const
  2. n=2;
  3. var
  4. i,j,k,skal:integer;
  5. o:boolean;
  6. mas:array [1..n,1..n] of integer;
  7. procedure vvod(i,j:integer);
  8. begin
  9. writeln('Введите ',n*n,' элементов матрицы:');
  10. for i:=1 to n do
  11. for j:=1 to n do
  12. read(mas[i,j]);
  13. readln;
  14. end;
  15. procedure vis(i,j:integer);
  16. begin
  17. writeln('Исходная матрица:');
  18. for i:=1 to n do
  19. begin
  20. for j:=1 to n do
  21. write(mas[i,j]:2);
  22. writeln;
  23. end;
  24. end;
  25. function alg(i,j,k,skal:integer; var o:boolean):integer;
  26. begin
  27. var
  28. o:=true;
  29. repeat
  30. j:=1;
  31. repeat
  32. skal:=0;
  33. for k:=1 to n do
  34. skal:=skal+mas[i,k]*mas[j,k];
  35. if ((i=j) and (skal<>1)) or ((i<>j) and (skal<>0)) then
  36. o:=false;
  37. j:=j+1;
  38. until not(o) or (j=n+1);
  39. i:=i+1
  40. until not (o) or (i=n+1);
  41. end;
  42. procedure viv(o:boolean);
  43. begin
  44. if o=true then
  45. writeln ('Ортонормированна')
  46. else
  47. writeln ('Не ортонормированна');
  48. readln;
  49. end;
  50. begin
  51. vvod(i,j);
  52. vis(i,j);
  53. alg(i,j,k,skal,o);
  54. viv(o);
  55. end.
Вот прога без подпрограмм
Листинг программы
  1. const n=2;
  2. var matrix:array[1..n,1..n] of integer;
  3. o:boolean;
  4. i,j,k,skal:integer;
  5. begin
  6. writeln('Введите ',n*n,' элементов матрицы:');
  7. for i:=1 to n do
  8. for j:=1 to n do
  9. read(matrix[i,j]);
  10. readln;
  11. writeln('Исходная матрица:');
  12. for i:=1 to n do
  13. begin
  14. for j:=1 to n do
  15. write(matrix[i,j]:2);
  16. writeln;
  17. end;
  18. writeln;
  19. i:=1;
  20. o:=true;
  21. repeat
  22. j:=1;
  23. repeat
  24. skal:=0;
  25. for k:=1 to n do
  26. skal:=skal+matrix[i,k]*matrix[j,k];
  27. if ((i=j) and (skal<>1)) or ((i<>j) and (skal<>0)) then o:=false;
  28. j:=j+1
  29. until not(o) or (j=n+1);
  30. i:=i+1
  31. until not (o) or (i=n+1);
  32. if o=true then writeln ('Ортонормированна')
  33. else writeln ('Не ортонормированна');
  34. readln
  35. end.

Решение задачи: «Определить, является ли данная целочисленная квадратная матрица ортонормированной»

textual
Листинг программы
  1. const
  2. n=2;
  3. var
  4. skal:integer;
  5. o:boolean;
  6. mas:array [1..n,1..n] of integer;
  7. procedure vvod;
  8. var i,j:integer;
  9. begin
  10. writeln('Введите ',n*n,' элементов матрицы:');
  11. for i:=1 to n do
  12. for j:=1 to n do
  13. readln(mas[i,j]);
  14. end;
  15. procedure vis;
  16. var i,j:integer;
  17. begin
  18. writeln('Исходная матрица:');
  19. for i:=1 to n do
  20.  begin
  21.   for j:=1 to n do
  22.   write(mas[i,j]:4);
  23.   writeln;
  24.  end;
  25. end;
  26. function alg:integer;
  27. var i,j,k:integer;
  28. begin
  29. o:=true;
  30. i:=1;
  31. repeat
  32.  j:=1;
  33.   repeat
  34.    skal:=0;
  35.    for k:=1 to n do
  36.    skal:=skal+mas[i,k]*mas[j,k];
  37.    if ((i=j) and (skal<>1)) or ((i<>j) and (skal<>0)) then o:=false;
  38.    j:=j+1;
  39.   until not(o) or (j=n+1);
  40.  i:=i+1
  41. until not (o) or (i=n+1);
  42. end;
  43. procedure viv;
  44. begin
  45. if o then writeln ('Ортонормированна')
  46. else  writeln ('Не ортонормированна');
  47. end;
  48. begin
  49. vvod;
  50. vis;
  51. alg;
  52. viv;
  53. end.

Объяснение кода листинга программы

Список действий в коде:

  1. Ввод данных о матрице (размерность и сами значения)
  2. Вывод исходной матрицы
  3. Проверка ортонормированности матрицы с помощью алгоритма, основанного на свойстве ортонормированности (используется внутреннее представление матрицы)
  4. Вывод результата проверки

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы