Симметричная матрица - Pascal ABC (12683)

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

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

Написать программу, которая проверяет, является ли квадратная матрица симметричной относительно главной диагонали. Входные данные В первой строке записаны через пробел размер квадратной матрицы N (количество строк равно количеству столбцов) ( 1 ≤ N ≤ 100 ). В следующих N строках записаны строки матрицы, в каждой – по N натуральных чисел, разделённых пробелами. Выходные данные Программа должна вывести слово 'YES', если матрица симметричная, и слово 'NO', если матрица несимметричная.

Решение задачи: «Симметричная матрица»

textual
Листинг программы
var f:text;
    n,i,j,k:integer;
    a:array[1..100,1..10] of integer;
begin
assign(f,'input.txt');//файл в папке с программой
reset(f);
readln(f,n);
for i:=1 to n do
for j:=1 to n do
read(f,a[i,j]);
close(f);
k:=0;
i:=2;
while (i<=n)and(k=0) do
 begin
  j:=1;
  while(j<i)and(k=0) do
  if a[i,j]<>a[j,i] then k:=1
  else j:=j+1;
  if k=0 then i:=i+1;
 end;
assign(f,'output.txt');//файл результата будет там же
rewrite(f);
if k=0 then writeln(f,'YES')
else writeln(f,'NO');
close(f);
write('Файл input прочитан, результат записан ф файл output')//можно убрать
end.

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

  1. Создается переменная f типа text, которая представляет собой файловый дескриптор для чтения и записи файлов.
  2. Задаются три переменные: n, i, j типа integer. Переменная n будет использоваться для ограничения внешнего цикла, переменные i и j будут использоваться для внутреннего цикла.
  3. Создается переменная a типа array[1..100,1..10] of integer. Эта переменная представляет собой матрицу размером 100x10. Она будет использоваться для хранения чисел, которые будут читаться из файла.
  4. Выполняется операция assign(f,'input.txt'), которая устанавливает файловый дескриптор f на файл 'input.txt' в текущей директории.
  5. Выполняется операция reset(f), которая подготавливает файловый дескриптор f для чтения.
  6. Выполняется операция readln(f,n), которая читает n строк из файла 'input.txt' и сохраняет их в переменную n.
  7. Начинается внешний цикл for, который выполняется n раз. Каждая итерация этого цикла будет обрабатывать одну строку из файла 'input.txt'.
  8. Начинается внутренний цикл for, который выполняется n-1 раз (так как i и j начинаются с 1, а не с 0).
  9. Внутри внутреннего цикла проверяется условие a[i,j]<>a[j,i]. Если это условие истинно, то переменная k устанавливается в 1. Это означает, что текущая строка не была прочитана корректно (т.е. она содержит разные числа в разных позициях). В этом случае внутренний цикл прерывается и переходит к следующей итерации внешнего цикла.
  10. Если условие a[i,j]<>a[j,i] ложно, то переменная j увеличивается на 1. Это означает, что текущая строка была прочитана корректно. В этом случае внутренний цикл продолжается.
  11. Если переменная k равна 0, то переменная i увеличивается на 1. Это означает, что все строки были прочитаны корректно. В этом случае внутренний цикл прерывается и переходит к следующей итерации внешнего цикла.
  12. Если переменная k не равна 0, то внутренний цикл повторяется.
  13. Выполняется операция close(f), которая закрывает файловый дескриптор f.
  14. Выполняется операция assign(f,'output.txt'), которая устанавливает файловый дескриптор f на файл 'output.txt' в текущей директории.
  15. Выполняется операция rewrite(f), которая перезаписывает содержимое файла 'output.txt'.
  16. Выполняется операция if k=0 then writeln(f,'YES') else writeln(f,'NO'), которая выводит результат проверки на корректность чтения строк из файла 'input.txt'.
  17. Выполняется операция close(f), которая закрывает файловый дескриптор f.
  18. Выводится сообщение 'Файл input прочитан, результат записан ф файл output', которое является комментарием и не требует выполнения.
  19. Код завершается.

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


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

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

15   голосов , оценка 3.733 из 5
Похожие ответы