Вычислить среднегеометрическое значение нечетных по номеру элементов первой половины массива - Pascal
Формулировка задачи:
Дан одномерный массив из 39 элементов.
1.. Вычислить среднегеометрическое значение нечетных по номеру элементов первой половины массива.
2.. Упорядочить положительные элементы массива по возрастанию.
Решение задачи: «Вычислить среднегеометрическое значение нечетных по номеру элементов первой половины массива»
textual
Листинг программы
{$MODE TP} const nMax = 39; type TSize = 0..nMax - 1; var ar: Array[TSize] Of ShortInt; i, j: TSize; mult: Integer; temp: ShortInt; begin Randomize(); mult := 1; Write('Original array:'); for i := Low(TSize) to High(TSize) do begin ar[i] := Random(199) - 99; if (Not Odd(i)) then mult := mult * ar[i]; Write(ar[i]:4); end; WriteLn; Write('Geometric mean: '); if (mult > 0) then WriteLn(Exp(Ln(mult) / ((nMax + 1) div 2)):0:4) else if (mult < 0) then WriteLn(-Exp(Ln(Abs(mult)) / ((nMax + 1) div 2)):0:4) //хотя математически неверно сие else WriteLn(0); for i := Low(TSize) to High(TSize) - 1 do for j := i + 1 to High(TSize) do if ((ar[i] > 0) And (ar[j] > 0) And (ar[i] > ar[j])) then begin temp := ar[i]; ar[i] := ar[j]; ar[j] := temp; end; Write('Sorted array:'); for i := Low(TSize) to High(TSize) do Write(ar[i]:4); end.
Объяснение кода листинга программы
- Объявляется константа
nMax
со значением 39. - Объявляется тип
TSize
как диапазон от 0 доnMax - 1
. - Объявляются переменные:
ar
как массив типаTSize
элементов типаShortInt
,i
иj
как переменные типаTSize
,mult
как переменная типаInteger
,temp
как переменная типаShortInt
.
- Инициализируется генератор случайных чисел.
- Выводится сообщение
Original array:
. - В цикле от 0 до
nMax - 1
инициализируются элементы массива случайными значениями от -99 до 99. Если индекс элемента четный, то переменнаяmult
умножается на значение этого элемента, иначе элемент выводится на экран. - Выводится сообщение
Geometric mean:
. - Если переменная
mult
больше 0, то вычисляется и выводится среднегеометрическое значение нечетных элементов первой половины массива через функцииExp
иLn
. - Если переменная
mult
меньше 0, то сначала берется модуль отmult
, вычисляется и выводится среднегеометрическое значение нечетных элементов первой половины массива, причем с отрицательным знаком. - В случае, если
mult
равно 0, просто выводится 0. - Сортируется массив методом выбора по возрастанию для положительных чисел.
- Выводится сообщение
Sorted array:
. - В цикле выводятся отсортированные элементы массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д