Случайными вещественными числами

Для решения данной подзадачи понадобится процедура ввода матрицы.

Назовем процедуру ввода матрицы словом Vvod. Для работы этой процедуры понадобится матрица и ее размерность (число строк и столбцов). При этом все три параметра должны передаваться как параметры переменные. Для корректного ввода в процедуру передадим также буквенное обозначение матрицы, для чего воспользуемся переменной Mname символьного типа. Чтобы не было коллизии имен между формальными и фактическими параметрами, назовем формальную матрицу X, а ее размерности Y, Z.

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

Элементы матриц должны быть созданы по условию задачи с помощью генератора случайных чисел Random. Функция Random без параметра формирует вещественные числа в диапазоне [0,1). Формула Random(b-a+1)+a будет выдавать случайные целые числа из диапазона [a,b]. Так как по условию задачи элементами матриц должны быть вещественные числа из диапазона [a,b], то к каждому полученному случайному вещественному числу из диапазона [0,1) необходимо прибавить случайное целое число из диапазона [a,b].

Возьмем, к примеру, интервал от -5 до 15. Тогда, получим Random + Random(21)-5. Таким образом, каждый очередной элемент массива будет представлять собой вещественное число из диапазона [-5, 15] и выводится на экран.

Алгоритм заполнения матриц соответствующими числами в виде фрагмента блок-схемы указан ниже:

Подалгоритм поиска

Максимального элемента в каждой матрице

С помощью процедуры

Для решения данной подзадачи понадобится процедура поиска максимального элемента матрицы.

Процедура поиска максимального элемента пусть будет Maximum. Для процедуры, собственно, матрица и ее размерность будут входными параметрами, а значение максимального элемента – выходным. Таким образом, здесь будет использован набор из четырех формальных параметров, три из которых будут передаваться как параметры-константы, а один – как параметр-переменная.

Переменные i, j, используемые в качестве переменных в циклах-счетчиках – чисто локальные, так как их значения носят вспомогательный характер и нужны только в пределах процедур для перебора элементов матрицы.

Все это можно представить в виде следующего фрагмента блок-схемы:

 



Подалгоритм поиска

Максимального элемента в каждой матрице

С помощью функции

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

 


 

 

 

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




РАЗРАБОТКА ПРОГРАММЫ

НА ЯЗЫКЕ PASCAL

 

Последний этап решения задачи – составление программы по полученной блок-схеме. Следует учесть, что поскольку по условию матрицы разного размера, то для описания нового типа данных T2mx необходимо использовать число строк и столбцов, которое удовлетворило бы размеры всех трех матриц. Можно взять, например, T2mx=array[1..15, 1..15] of real.

Программа начинается со служебного слова Program, после которого следует заголовок программы. В данном случае это PP_1.

Далее включаем раздел Uses для использования модуля CRT, который применяется для управления работой экрана в текстовом режиме.

После названия программы и идентификации используемых модулей следует раздел объявления констант (const) и переменных (var).

Тело программы или раздел операторов начинается со слова begin и заканчивается end. В этом разделе описываем действия, которые должна выполнить программа согласно выбранного алгоритма.

Так как в программе подразумевается ввод данных с экрана и вывод полученных результатов на экран, перед началом программы его необходимо очистить от ненужной информации. Это проделывает процедура clrscr, которая описана в модуле Crt.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: