Вычислить сумму положительных элементов массива - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, не могу выполнить в паскале эти задания выполнить, а завтра сдавать В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму положительных элементов массива; 2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. 3) Упорядочить элементы массива по убыванию. Оформить решения задач с помощью процедур и/или функций (При решении задач не использовать глобальные переменные) Ребят, если можете, помогите с заданиями

Решение задачи: «Вычислить сумму положительных элементов массива»

textual
Листинг программы
  1. procedure aGen(var a: array of Real; b, c: Real);
  2. var i: Integer;
  3. begin
  4.   for i:=Low(a) to High(a) do a[i]:=b+c*Random;
  5. end;
  6. procedure aWrite(const a: array of Real; const s: String);
  7. var i: Integer;
  8. begin
  9.   WriteLn(s); for i:=Low(a) to High(a) do Write(a[i]:7:1); WriteLn;
  10. end;
  11. function SumP(const a: array of Real): Real;
  12. var i: Integer; r: Real;
  13. begin
  14.   r:=0; for i:=Low(a) to High(a) do if a[i]>0 then r:=r+a[i];
  15.   SumP:=r;
  16. end;
  17. procedure ProdM(const a: array of Real);
  18. var i, mn, mx: Integer; r: Real;
  19. begin
  20.   mn:=Low(a); mx:=Low(a); r:=1;
  21.   for i:=Low(a) to High(a) do if Abs(a[mn])>Abs(a[i]) then mn:=i;
  22.   for i:=Low(a) to High(a) do if Abs(a[mx])<Abs(a[i]) then mx:=i;
  23.   Write('Произведение между мин. и макс. по модулю: ');
  24.   if Abs(mx-mn)<=1 then WriteLn('нет элементов')
  25.   else if mx>mn
  26.   then for i:=mn+1 to mx-1 do r:=r*a[i]
  27.   else for i:=mx+1 to mn-1 do r:=r*a[i];
  28.   WriteLn(r:0:2);
  29. end;
  30. procedure Sort(var a: array of Real);
  31. var i, j, n: Integer; t: Real;
  32. begin
  33.   i:=High(a);
  34.   repeat
  35.     n:=Low(a);
  36.     for j:=Low(a) to i-1 do
  37.       if a[j+1]>a[j] then begin
  38.         n:=j; t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;
  39.       end;
  40.     i:=n;
  41.   until n=Low(a);
  42. end;
  43. var a: array [1..10] of Real;
  44. begin
  45.   Randomize;
  46.   aGen(a,-99,199); aWrite(a,'A =');
  47.   WriteLn('Сумма положительных: ', SumP(a):0:1);
  48.   ProdM(a);
  49.   Sort(a); aWrite(a,'A''=');
  50. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы