Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник с исправлением.doc
Скачиваний:
55
Добавлен:
08.05.2015
Размер:
922.62 Кб
Скачать

5. Процедуры и функции

5.1 Составить программу для вычисления значений следующих выражений:

U = max(x+y, x*y); V = max(0,5, U).

Пояснения к программе

По условию задания необходимо два раза выполнить однотипные вычисления, поэтому алгоритм нахождения максимума из двух значений оформим в виде процедуры с параметрами Max_2. Сравниваемые величины передаются в процедуру как параметры-значенияR1,R2, а для передачи в вызывающую программу результата выполнения подпрограммы задается параметр-переменнаяRes.

program Max(input, output);

Var x, y, U, V : Real;

procedure Max_2 ( R1, R2 : Real; Var Res : Real );

begin

if R1 > R2

then Res := R1

else Res := R2

end;

Begin

WriteLn ('Введите значения "x" и "y" ');

Read(x, y);

Max_2 ( x+y, x*y, U);

Max_2 ( 0.5, U, V);

WriteLn ('U=', U:6:1, ' V=', V:6:1 );

End.

5.2 Заданный массив целых чисел делится на три части двумя элементами: мак­симальным и минимальным. Определите сумму элементов в каждой части массива. Используйте функции для нахождения индексов минимального и максимального элементов и подсчета суммы элементов в указанной части массива.

5.3 Пусть дана матрица А размером п х т, состоящая из вещественных чисел. Необходимо получить матрицу В размером п х т, каждый элемент bij, кото­рой равен true, если сумма соседних с aij, элементов меньше указанной вели­чины Z, и false — в противном случае. Воспользуйтесь функцией для нахож­дения суммы соседних элементов.

5.4 Составить программу для вычисления значений следующих выражений:

U = max( Xi ); V = max( Yi ), где i = 1 ¸ n.

Пояснения к программе

По условию задания необходимо два раза выполнить однотипные вычисления, поэтому алгоритм нахождения максимума в одномерном массиве из nэлементов оформим в виде процедуры с параметрамиMaxVekt. Параметром для данной процедуры является массив и его тип (как и всех составных типов) может быть указан только с помощью предварительно описанного имени типа. Безымянные типы в этом случае не допускаются. Чтобы не создавать в процедуре копию параметра-массива, он объявлен как параметр-переменная и передается по ссылке.

program Max_Vekt;

Const

N = 10;

Type

Vector = Array [ 1 .. N ] of Real;

Var

U, V : Real; X, Y : Vector; i : Integer;

procedure MaxVekt(Var A:Vector; N:Integer; Var Max:Real);

Var i : Integer;

begin

Max := A[ 1 ];

for i := 2 to N do

if A[ i ] > Max then Max := A[ i ]

end;

Begin

Writeln( 'Введите элементы массива "X"');

for i := 1 to N do

Read( X[ i ]);

Writeln( 'Введите элементы массива "Y"');

for i := 1 to N do

Read( Y[ i ]);

MaxVekt ( X, N, U );

Writeln('Максимальное значение в массиве "X" =',U :7:1);

MaxVekt ( Y, N, V );

Writeln('Максимальное значение в массиве "Y" =',V :7:1)

End.

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

а) умножением минимального элемента каждой строки первой матрицы на наибольший элемент соответствующего столбца второй матрицы;

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

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

5.7 Для заданных значений п и т (пт) написать программу вычисления числа сочетаний из т элементов по п:

С=