Вычислить среднегеометрическое значение нечетных по номеру элементов первой половины массива - 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:
. - В цикле выводятся отсортированные элементы массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д