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

Объяснение кода листинга программы

  1. В процедуре aGen происходит заполнение массива a случайными числами с помощью функции Random. При этом каждый элемент a[i] вычисляется как сумма двух констант b и c, умноженная на Random.
  2. В процедуре aWrite происходит вывод содержимого массива a на экран. Для каждого элемента a[i] выводится его значение, при этом количество знаков после запятой равно 7.
  3. В функции SumP происходит вычисление суммы положительных элементов массива a. Для этого используется цикл, который проходит по всем элементам массива. Если элемент a[i] больше нуля, то он добавляется к переменной r.
  4. В процедуре ProdM происходит поиск минимального и максимального элемента массива a по модулю. Затем вычисляется произведение между минимальным и максимальным элементом, и оно выводится на экран.
  5. В процедуре Sort происходит сортировка массива a по возрастанию. Для этого используется алгоритм сортировки пузырьком. Цикл повторяется до тех пор, пока не будет отсортирован в нужном порядке.
  6. В основной части программы создается массив a размером 10. Затем вызываются процедуры aGen, aWrite, SumP, ProdM и Sort, чтобы заполнить, вывести, посчитать сумму положительных элементов, найти произведение между минимальным и максимальным элементом и отсортировать массив соответственно.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы