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