Подпрограмма-функция - Pascal
Формулировка задачи:
Написать программу решения задачи, используя функции: в основной функции ввести с клавиатуры или вычислить с помощью генератора случайных чисел 10 элементов массива вещественного типа и напечатать результат вычислений, во вспомогательной - вычислить скалярную величину, согласно варианта задания:
Решение задачи: «Подпрограмма-функция»
textual
Листинг программы
const
N = 10;
type
TVector = Array[1..N] Of Real;
function GenVector(var ar: TVector): Boolean;
var
i: 1..N;
k: Integer;
begin
repeat
WriteLn('Выберите способ инициализации массива:');
WriteLn('1. Ручной ввод.');
WriteLn('2. Генератор случайных чисел.');
ReadLn(k);
until (k in [1..2]);
Write('Вектор X:');
if (k = 2)
then
begin
Randomize;
for i := 1 to N do
begin
ar[i] := Random*20 - 10;
Write(ar[i]:7:2);
end;
WriteLn;
end
else
begin
WriteLn;
for i := 1 to N do
begin
Write('x[', i, ']=');
ReadLn(ar[i]);
end;
end;
GenVector := True;
end;
function G(const ar: TVector): Extended; //Double | Real
var
p, s: Extended; //Double | Real
i: 1..N;
begin
p := 1;
s := 0;
for i := 1 to N do
begin
p := p*ar[i];
s := s + ar[i];
end;
G := Cos(p)/Sin(s);
end;
var
x: TVector;
begin
GenVector(x);
WriteLn('G=', G(x):0:3);
end.
Объяснение кода листинга программы
- Объявление константы
Nсо значением 10. - Объявление типа
TVectorкак массива из 10 вещественных чисел. - Объявление функции
GenVectorс возвращаемым значением Boolean и параметромarтипа TVector. - Объявление переменной
iтипа целого числа в диапазоне от 1 до 10. - Объявление переменной
kтипа целого числа. - Начало блока кода функции
GenVector. - Цикл повторения до тех пор, пока значение переменной
kне будет в диапазоне от 1 до 2. - Вывод сообщений о выборе способа инициализации массива.
- Считывание значения переменной
k. - Завершение цикла повторения.
- Вывод сообщения
Вектор X:. - Если значение переменной
kравно 2, то выполняется следующий блок кода, иначе следующий блок кода. - Если выбрано значение 2, то для каждого элемента массива
arгенерируется случайное вещественное число в диапазоне от -10 до 10, и его значение выводится. - В противном случае пользователю предлагается ввести значения элементов массива
arвручную. - Окончание блока кода функции
GenVector. - Определение функции
Gс параметромarтипа TVector и возвращаемым значением типа Extended (вещественное число с повышенной точностью). - Объявление переменных
pиsтипа Extended и переменнойiтипа целого числа в диапазоне от 1 до 10. - Начало блока кода функции
G. - Установление начальных значений переменных
pиsравными 1 и 0 соответственно. - Вычисление произведения всех элементов массива
arи их суммы. - Вычисление значения функции G по формуле
Cos(p)/Sin(s). - Окончание блока кода функции
G. - Объявление переменной
xтипа TVector. - Начало блока кода программы.
- Инициализация массива
xс помощью функцииGenVector. - Вывод значения функции
Gдля массиваxс точностью до трех знаков после запятой. - Окончание блока кода программы.