Вычислить сумму положительных элементов массива - Free Pascal
Формулировка задачи:
Здравствуйте, не могу выполнить в паскале эти задания выполнить, а завтра сдавать
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) сумму положительных элементов массива;
2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
3) Упорядочить элементы массива по убыванию.
Оформить решения задач с помощью процедур и/или функций
(При решении задач не использовать глобальные переменные)
Ребят, если можете, помогите с заданиями
Решение задачи: «Вычислить сумму положительных элементов массива»
textual
Листинг программы
procedure aGen(var a: array of Real; b, c: Real); var i: Integer; begin for i:=Low(a) to High(a) do a[i]:=b+c*Random; end; procedure aWrite(const a: array of Real; const s: String); var i: Integer; begin WriteLn(s); for i:=Low(a) to High(a) do Write(a[i]:7:1); WriteLn; end; function SumP(const a: array of Real): Real; var i: Integer; r: Real; begin r:=0; for i:=Low(a) to High(a) do if a[i]>0 then r:=r+a[i]; SumP:=r; end; procedure ProdM(const a: array of Real); var i, mn, mx: Integer; r: Real; begin mn:=Low(a); mx:=Low(a); r:=1; for i:=Low(a) to High(a) do if Abs(a[mn])>Abs(a[i]) then mn:=i; for i:=Low(a) to High(a) do if Abs(a[mx])<Abs(a[i]) then mx:=i; Write('Произведение между мин. и макс. по модулю: '); if Abs(mx-mn)<=1 then WriteLn('нет элементов') else if mx>mn then for i:=mn+1 to mx-1 do r:=r*a[i] else for i:=mx+1 to mn-1 do r:=r*a[i]; WriteLn(r:0:2); end; procedure Sort(var a: array of Real); var i, j, n: Integer; t: Real; begin i:=High(a); repeat n:=Low(a); for j:=Low(a) to i-1 do if a[j+1]>a[j] then begin n:=j; t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t; end; i:=n; until n=Low(a); end; var a: array [1..10] of Real; begin Randomize; aGen(a,-99,199); aWrite(a,'A ='); WriteLn('Сумма положительных: ', SumP(a):0:1); ProdM(a); Sort(a); aWrite(a,'A''='); end.
Объяснение кода листинга программы
- В процедуре
aGen
происходит заполнение массиваa
случайными числами с помощью функцииRandom
. При этом каждый элементa[i]
вычисляется как сумма двух константb
иc
, умноженная наRandom
. - В процедуре
aWrite
происходит вывод содержимого массиваa
на экран. Для каждого элементаa[i]
выводится его значение, при этом количество знаков после запятой равно 7. - В функции
SumP
происходит вычисление суммы положительных элементов массиваa
. Для этого используется цикл, который проходит по всем элементам массива. Если элементa[i]
больше нуля, то он добавляется к переменнойr
. - В процедуре
ProdM
происходит поиск минимального и максимального элемента массиваa
по модулю. Затем вычисляется произведение между минимальным и максимальным элементом, и оно выводится на экран. - В процедуре
Sort
происходит сортировка массиваa
по возрастанию. Для этого используется алгоритм сортировки пузырьком. Цикл повторяется до тех пор, пока не будет отсортирован в нужном порядке. - В основной части программы создается массив
a
размером 10. Затем вызываются процедурыaGen
,aWrite
,SumP
,ProdM
иSort
, чтобы заполнить, вывести, посчитать сумму положительных элементов, найти произведение между минимальным и максимальным элементом и отсортировать массив соответственно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д