Примеры решения задач

Задача: Найти произведение ненулевых элементов матрицы.

Решение:

1. Для решения данной задачи нам потребуются переменные: матрица, состоящая, например, из целочисленных элементов; P – произведение элементов, отличных от 0; I, J – индексы массива; N, M – количество строк и столбцов в матрице.

2. Входными данными являются N, M – их значения введем с клавиатуры; матрица – ввод матрицы оформим в виде процедуры, заполнение матрицы осуществим случайным образом, т.е. с помощью функции random().

3. Выходными данными будет являться значение переменной P (произведение).

4. Чтобы проверить правильность выполнения программы, необходимо вывести матрицу на экран, для этого оформим процедуру вывода матрицы.

5. Ход решения задачи:

обсудим сначала выполнение основной программы, реализацию процедур обговорим чуть позже:

· введем значения N и M;

· Введем матрицу, для этого обращаемся к процедуре vvod(a), где а – матрица;

· Напечатаем полученную матрицу, для этого обращаемся к процедуре print(a);

· Присвоим начальное значение переменной P=1;

· Будем последовательно перебирать все строки I от 1-й до N-й, в каждой строке будем перебирать все столбцы J от 1-го до
M-го, для каждого элемента матрицы будем проверять условие: если aij¹0, то произведение P будем домножать на элемент aij (P=P*aij);

· Выведем на экран значение произведения ненулевых элементов матрицы – P;

А теперь поговорим о процедурах.

Замечание (это важно!) Параметром процедуры может быть любая переменная предопределенного типа, это означает, что для передачи в процедуру массива в качестве параметра, тип его должен быть описан заранее. Например:

Type

Matrix=array [1..10, 1..10] of integer;

..............................

procedure primer (a: matrix);

..............................

Вернемся теперь к нашим процедурам.

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

Procedure vvod(var m: matrix);

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

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

Procedure print (m: matrix);

И вновь для реализации вложенных циклов внутри процедуры нам потребуются счетчики, пусть они называются так же – k и h. Алгоритм вывода матрицы на экран был описан выше, воспользуемся этим описанием.


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



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