Вычислить сумму положительных элементов массива - 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, чтобы заполнить, вывести, посчитать сумму положительных элементов, найти произведение между минимальным и максимальным элементом и отсортировать массив соответственно.