Вычислить произведение отрицательных элементов массива - Pascal ABC (13032)
Формулировка задачи:
Помогите, пожалуйста!!!
В одномерном массиве, который состоит из n действительных элементов, вычислить:
а) произведение отрицательных элементов массива;
б) сумму положительных элементов массива, расположенных до максимального элемента;
в) изменить порядок следования элементов в массиве на обратный.
Нужно написать программу с использованием подпрограмм (функций и процедур).
Очень прошу, помогите!!
Решение задачи: «Вычислить произведение отрицательных элементов массива»
textual
Листинг программы
type TLine = Array[Byte] Of Real; procedure PrintArray(const ar: TLine; const n: Byte); var i: Byte; begin WriteLn; for i := 0 to n - 1 do Write(ar[i]:7:2); WriteLn; end; procedure InitArray(var ar: TLine; var n: Byte); var i: Byte; begin repeat Write('Input n: '); ReadLn(n); until (n > 0); Randomize(); for i := 0 to n - 1 do ar[i] := Random * 198 - 99; PrintArray(ar, n); end; function ZadA(const ar: TLine; const n: Byte): Double; var Result: Double; //удалить строку при ошибке повторного объявления идентификатора i: Byte; begin Result := 1; for i := 0 to n - 1 do if (ar[i] < 0) then Result := Result * ar[i]; ZadA := Result; end; function ZadB(const ar: TLine; const n: Byte): Double; var Result: Double; //удалить строку при ошибке повторного объявления идентификатора i, iMax: Byte; begin iMax := 0; for i := 1 to n - 1 do if (ar[i] > ar[iMax]) then iMax := i; Result := 0; i := 0; while (i < iMax) do begin Result := Result + ar[i]; Inc(i); end; ZadB := Result; end; procedure ZadC(var ar: TLine; const n: Byte); procedure Swap(var x, y: Real); var z: Real; begin z := x; x := y; y := z; end; var i: Byte; begin for i := 0 to (n - 1) div 2 do Swap(ar[i], ar[n - i - 1]); end; var ar: TLine; n: Byte; begin InitArray(ar, n); WriteLn('A=', ZadA(ar, n):0:2); WriteLn('B=', ZadB(ar, n):0:2); ZadC(ar, n); PrintArray(ar, n); end.
Объяснение кода листинга программы
- В функции
ZadA
используется циклfor
, который выполняетсяn-1
раз, гдеn
- введенное с клавиатуры число. Внутри цикла проверяется условиеif (ar[i] < 0)
, если оно истинно, то значение переменнойResult
умножается на значение элемента массиваar[i]
. Это происходит для каждого элемента массива от 0 доn-1
. - Функция
ZadB
также использует циклfor
, который выполняетсяn-1
раз. Внутри цикла проверяется условиеif (ar[i] > ar[iMax])
, если оно истинно, то значение переменнойiMax
устанавливается равным значению переменнойi
. Затем значение переменнойResult
инициализируется как 0, а переменнаяi
устанавливается равной 0. Затем начинается вложенный циклwhile (i < iMax)
, в котором значение переменнойResult
увеличивается на текущее значение элемента массиваar[i]
, а затем переменнаяi
инкрементируется. После окончания вложенного цикла значение переменнойResult
присваивается переменнойz
, значение переменнойx
устанавливается равным значению переменнойy
, а значение переменнойy
устанавливается равным значению переменнойz
. - В функции
ZadC
сначала вызывается функцияSwap
, которая меняет местами два элемента массива. Затем вызывается функцияZadC
с аргументамиar
иn
. После этого выводится сообщение с результатами вычислений функцийZadA
иZadB
. - В функции
PrintArray
используется циклfor
, который выполняетсяn
раз. Внутри цикла выводится значение каждого элемента массиваar[i]
с помощью функцииWrite
. - В функции
InitArray
считывается числоn
с клавиатуры, пока не будет введено положительное число. Затем вызывается функцияRandomize
, чтобы инициализировать генератор случайных чисел. Затем в циклеfor
вычисляется произведение всех элементов массиваar
с помощью функцииZadA
. Наконец, выводится результат вычислений с помощью функцииWriteLn
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д