Как транспонировать матрицу в паскале
Перейти к содержимому

Как транспонировать матрицу в паскале

  • автор:

 

3.2.8. Транспонирование матрицы

Транспонированием матрицы называется перестановка элементов строк матрицы с элементами соответствующих столбцов матрицы.

Исходная матрица А Полученная матрица В

Р ассмотрим общий случай транспонирования матриц. Пусть задана матрица А[N,M]. В результате транспонирования должна получиться новая матрица, например В, в которой будет М строк и N столбцов. При транспонировании элемент исходной матрицы A[i,j] будет записан на место элемента новой матрицы B[j,i] (рис. 53).

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

На рис. 54 приведен алгоритм транспонирования квадратной матрицы.

For i :=1 to N-1 do

For j:= i +1 to N do

Иерархическая структура программы

Алгоритмический язык Turbo Pascal является языком структурного программирования и поэтому позволяет организовывать программы иерархическим способом. Объектом каждого уровня иерархии является модуль — поименованный синтаксически независимый фрагмент программы, реализующий логически законченную часть алгоритма.

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

В языке Turbo Pascal объектом верхнего уровня иерархии является основная программа, которая считается глобальным модулем и задает имя для всей программы. Каждый более низкий уровень иерархии может быть представлен в виде подпрограммы — локального модуля, имеющей самостоятельное имя.

Пример иерархической структуры модулей в программе приведен на рис.1

Чтобы локальный модуль начал работу, необходимо, чтобы модуль более высокого (а в некоторых случаях того же) уровня к нему обратился. Другими словами, подпрограмма должна быть вызвана. Вызов подпрограммы приводит к выполнению входящих в подпрограмму операторов. После выполнения последовательности операторов, входящих в подпрограмму, управление возвращается в вызывающий модуль, и работа программы продолжается с той команды, которая непосредственно следует за вызовом подпрограммы

При вызове подпрограмма может получить исходные данные от вызывающего модуля. При необходимости подпрограмма может передать (возвратить) полученный результат работы вызывающему модулю. Для обмена информацией между модулями существует механизм передачи параметров.

В языке программирования Turbo Pascal существует два вида подпрограмм – процедуры и функции. Имея аналогичную структуру, процедуры и функции различаются назначением и способом их использования.

Процедуры служат для задания совокупности действий, направленных на изменение внешней по отношению к ним программной обстановки.

Смысл функций заключается в том, чтобы определить алгоритм вычисления нового значения некоторого простого или ссылочного типа. В этом отношении функции подобны выражениям, которые также вычисляют значение.

 

Использование подпрограмм позволяет:

структурировать текст программы путем разбиения ее на иерархически подчиненные модули;

сделать программу более компактной, т.к. многократно повторяющиеся фрагменты программы описываются только один раз;

ускорить процесс написания программы путем разделения работы между несколькими программистами;

Дана матрица A размером KxM. Получить транспонированную матрицу A* и произведение AxA*.

Следует разработать программу, выполняющую стандартные математические операции транспонирования и умножения матриц. Для хранения матриц используются двумерные массивы (исходная матрица А и результирующая матрица А*), размерность матриц задается с клавиатуры.

Метод решения задачи:

Транспонирование массива заключается в том, что первая строка массива становится первым столбцом нового массива, вторая строка массива становится вторым столбцом нового массива и так далее. Вы можете скачать вайбер на андроид телефон при помощи которого Вы сможете общаться с друзьями а также передавать фото и видео файлы.

Произведение двух матриц размерностью КхМ вычисляется согласно следующему правилу: a [i,j] = sum k=1 to n b [i,j]*c[k,j] , где i — номер строки, а j — номер столбца.

Алгоритм решения задачи:

1.Ввод аргументов k, m — размеров матрицы ; 2.Заполнение массива целыми числами. 3.Транспонирование матрицы. 4.Нахождение произведения транспонированной матрицы и исходной. 5.Вывод результатов.

Описание структур данных, использованных в алгоритме:

Mаs, trans, pr – массивы целых чисел; содержащие исходную, транспонированную матрицы, произведение матриц.

i, j, k – счетчики цикла; изменяются под управлением оператора цикла. ar_sizex, ar_sizey – аргументы, в которые заносятся данные о размерах исходного массива (параметры К и М).

Программа и методика испытания:

Данный алгоритм представлен несколькими циклическими структурами с внутрицикловыми ветвлениями. Поэтому во время проведения испытаний разработанной программы следует проверить правильность задания граничных значений для параметра цикла, правильность (соответствие поставленной задаче) тела цикла, правильность начальных условий для операторов тела цикла.

Для корректной работы алгоритма программы следует провести контроль введенных оператором начальных значений используемых параметров. При этом используется цикл типа «REPEAT..UNTIL», выполняемый до тех пор, пока не будут заданы правильные начальные условия выполнения основного алгоритма программы (K > 0, N>0). При вводе неправильного значения производится возврат к началу цикла для повторного ввода информации с выдачей соответствующего информационного сообщения.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *