
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования «Тульский государственный университет»
Кафедра «Информационная безопасность»
Подпрограмма - процедура
отчет по
лабораторной работе № 1
по курсу
Программирование
Вариант 11
Выполнил: ст. гр. 221041 Макаров А.В
Проверил: асс, каф. ИБ Кушнир О.А.
Тула, 2015 г.
Цель и задача работы
Изучить работу с подпрограммами-процедурами. Реализовать программу лабораторной работы номер 5 с подпрограммой-процедурой, например ввод в одной подпрограмме-процедуре, вывод в другой подпрограмме-процедуре, а обработка в третьей подпрограмме-процедуре. Обрабатываемые данные передаются в подпрограмму-процедуру и возвращаются оттуда через параметры.
Задание на работу
Задана последовательность из N вещественных чисел. Вычислить число наиболее приближенное к среднему арифметическому максимального и минимального чисел данной последовательности
Схема алгоритма
На
рисунке 1 представлена схема алгоритма
поиска наиболее приближенное к среднему
арифметическому максимального и
минимального чисел данной последовательности
Рисунок 1 - Схема алгоритмы решения поставленной задачи
На рисунке 2 представлена схема алгоритма ввода пользователем числовой последовательности.
Рисунок 2 - Схема алгоритмы ввода числовой последовательности
На рисунке 3 представлена схема алгоритма поиска максимального и минимального значения числовой последовательности.
Рисунок 3 - Схема алгоритма поиска максимального и минимального элемента
числовой последовательности
На рисунке 4 представлена схема алгоритма нахождения числа наиболее приближенного к среднему арифметическому.
Рисунок 4 - Схема алгоритма нахождения числа наиболее приближенного к среднему арифметическому
На рисунке 5 представлена схема алгоритма вывода результата работы программы.
Рисунок 5 - Схема алгоритма вывода результата работы программы
Код программы
{
Данная программа предназначена для поиска числа
наиболее приближенного к среднему арифметическому максимального и
минимального чисел данной последовательности
}
PROGRAM TEST;
CONST
MAX_SIZE = 100; { максимальный размер массива }
TYPE
VECTOR = array [1..MAX_SIZE] of REAL; { тип для числовой последовательности }
{Подпрограмма ввода значений числовой последовательности
pArray - числовая последовательность
Size - размерность последовательности}
PROCEDURE EnterArrayValue(VAR pArray : VECTOR; Size : INTEGER);
VAR
Index : INTEGER;
CheckInput : string;
Err : INTEGER;
BEGIN
WRITELN('Enter array [', Size,']');
for Index := 1 to Size do
BEGIN
REPEAT
WRITE('[',Index,']: ');
READLN(CheckInput);
VAL(CheckInput,pArray[Index],Err);
UNTIL (Err = 0);
END;
END;
{
Подпрограмма ввода значений числовой последовательности
pArray - числовая последовательность
Size - размерность последовательности
Min - минимальное значение
Max - максимальное значение
}
PROCEDURE FindMinMaxElements(VAR pArray : VECTOR; Size : INTEGER; VAR Min : REAL; VAR Max : REAL);
VAR
Index : INTEGER;
BEGIN
Max := Round(pArray[1]);
Min := Max;
for Index := 1 to Size do
BEGIN
if (pArray[Index] > Max) then
Max := Round(pArray[Index]);
if (pArray[Index] < Min) then
Min := Round(pArray[Index]);
END;
END;
{
Подпрограмма поиска наиболее приближенного числа
pArray - числовая последовательность
Size - размерность последовательности
Min - минимальное значение
Max - максимальное значение
NearNumber - наиболее приближенное число
}
PROCEDURE FindNearNumber(VAR pArray : VECTOR; Size : INTEGER; Min : REAL; Max : REAL; Average : REAL; VAR NearNumber : REAL);
VAR
Sub : REAL;
Index : INTEGER;
BEGIN
NearNumber := pArray[1];
Sub := abs(Max - Min);
for Index := 1 to Size do
BEGIN
if (abs(pArray[Index] - Average) < Sub) then
BEGIN
Sub := abs(pArray[Index] - Average);
NearNumber := pArray[Index];
END;
END;
END;
{
Подпрограмма вывода результата работы программы
NearNumber - наиболее приближенное число
}
PROCEDURE PrintResult(Result : REAL);
BEGIN
WRITELN('Near number: ',Result:1:3);
END;
{==========================================================}
VAR
RealArray : VECTOR;
Size: INTEGER;
Max : REAL;
Min : REAL;
Average : REAL;
NearNumber : REAL;
BEGIN
WRITELN('Данная программа предназначена для поиска в последовательности число, наиболее приближенное'
' к среднему арифметическому максимального и минимального числа последовательности');
WRITE('Enter element count [1..100]: ');
READLN(Size);
EnterArrayValue(RealArray, Size);
FindMinMaxElements(RealArray,Size,Min,Max);
Average := (Min + Max) / 2;
WRITELN('Average: ',Average);
FindNearNumber(RealArray,Size,Min,Max,Average,NearNumber);
PrintResult(NearNumber);
END.