Другие языки программирования и технологии

Задача квадратная матрица, паскаль.

Дана квадратная матрица порядка n(n=10). Если заданная квадратная
матрица является симметричной относительно главной диагонали, то
переставить местами две строки матрицы. Помогите пожалуйста, даже не знаю как к ней подобраться. Может быть подскажите хотя бы логическую цепочку ее выполнения
> Помогите пожалуйста, даже не знаю как к ней подобраться.

Желательно скрытно, чтобы не заметила. :)

> Может быть подскажите хотя бы логическую цепочку ее выполнения

По сути, здесь две задачи. Какая конкретно вам не понятна? Как проверить матрицу на симметричность или как поменять строки местами?

Для проверки матрицы вводим вспомогательную логическую переменную, которой присваиваем значение ИСТИНА, т. е. считаем, что матрица изначально симметрична. Затем два цикла. Внешний от первой строки до предпоследней и внутренний от столбца с номером, равным номеру текущей строки, увеличенному на единицу и до последнего. В теле внутреннего цикла проверка на неравенство элементов A[i,j] и A[j,i]. При выполнении условия логической переменной присваивается значение ЛОЖЬ. Все, значение этой переменной дает однозначный ответ о симметричности матрицы.

Ну а дальше перестановка строк, при необходимости. Проще всего ее сделать, если объявить массив не совсем "традиционно". Сначала объявляется пользовательский тип "строка", а затем и сам массив, как одномерный массив таких строк. Кроме того потребуется еще переменная с таким же типом для использования в качестве буфера.

type Row = array[1..n] of Integer;
var A : array[1..n] of Row;
var Buf : Row;

А дальше меняем строки по аналогии с обменом значениями для обычных переменных (для первой и второй строк)

Buf := A[1];
A[1] := A[2];
A[2] := Buf;

Вот и вся логическая цепочка. :)
Александр Попович
Александр Попович
59 627
Лучший ответ