Найти произведение элементов массива, расположенных между максимальным и минимальным элементами - Free Pascal (1050)
Формулировка задачи:
Дан одномерный массив, состоящий из N вещественных элементов. Найти произведение элементов массива, расположенных между максимальным и минимальным элементами.
Формат выходных данных
Выведите в выходной файл искомое произведение с 3 знаками после десятичной точки или 0, если между максимальным и минимальным элементом нет других элементов.
Примеры:
Вход
5
-3.12 -5.25 2.5 1.2 6
Выход
3.000
Вход
2
1.24 5.36
Выход
0.000
Решение задачи: «Найти произведение элементов массива, расположенных между максимальным и минимальным элементами»
textual
Листинг программы
const n=100; var a: array [1..n] of real; p: real; n, i, imin, imax: integer; begin Assign(input,'in.txt'); Assign(output,'out.txt'); Reset(input); Rewrite(output); ReadLn(n); imin:=1; imax:=1; for i:=1 to n do begin Read(a[i]); if a[i]<a[imin] then imin:=i; if a[i]>a[imax] then imax:=i; end; p:=1; if imin<imax then for imin+1 to imax-1 do p:=p*a[i] else for imin+1 downto imax-1 do p:=p*a[i]; if abs(imin-imax)<=1 then p:=0; WriteLn(p:0:3) ; end.
Объяснение кода листинга программы
- Задается константа
nравная 100, которая определяет размер массиваa. - Создается массив
aразмеромnдля хранения чисел. - Создается переменная
pдля хранения произведения элементов массива. - Создаются три переменные
n,iиiminдля контроля цикла и определения индексов минимального и максимального элементов массива. - Открываются файлы
in.txtдля чтения иout.txtдля записи. - Считывается число из файла
in.txtв переменнуюn. - Инициализируются переменные
iminиimaxравными 1. - Цикл считывает числа из файла
in.txtи записывает их в массивa. - Внутри цикла проверяется, является ли текущий элемент минимальным или максимальным, и обновляются значения переменных
iminиimaxпри необходимости. - После окончания цикла, цикл для вычисления произведения элементов массива начинается.
- Если
iminменьшеimax, то цикл перебирает элементы отimin+1доimax-1и вычисляет произведение элементов, которое затем присваивается переменнойp. - Если
iminбольше или равноimax, то цикл перебирает элементы отimin+1доimax-1в обратном порядке и вычисляет произведение элементов, которое затем присваивается переменнойp. - Если разница между
iminиimaxменьше или равна 1, то переменнаяpприсваивается 0. - Записывается значение переменной
pв файлout.txt. - Закрываются файлы
in.txtиout.txt.