Вычислить произведение отрицательных элементов массива - Pascal ABC (13032)

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

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

Помогите, пожалуйста!!! В одномерном массиве, который состоит из n действительных элементов, вычислить: а) произведение отрицательных элементов массива; б) сумму положительных элементов массива, расположенных до максимального элемента; в) изменить порядок следования элементов в массиве на обратный. Нужно написать программу с использованием подпрограмм (функций и процедур). Очень прошу, помогите!!

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

textual
Листинг программы
type
    TLine = Array[Byte] Of Real;
procedure PrintArray(const ar: TLine; const n: Byte);
var
    i: Byte;
begin
    WriteLn;
    for i := 0 to n - 1 do
        Write(ar[i]:7:2);
    WriteLn;
end;
 
procedure InitArray(var ar: TLine; var n: Byte);
var
    i: Byte;
begin
    repeat
        Write('Input n: '); ReadLn(n);
    until (n > 0);
    Randomize();
    for i := 0 to n - 1 do
        ar[i] := Random * 198 - 99;
    PrintArray(ar, n);
end;
 
function ZadA(const ar: TLine; const n: Byte): Double;
var
    Result: Double; //удалить строку при ошибке повторного объявления идентификатора
    i: Byte;
begin
    Result := 1;
    for i := 0 to n - 1 do
        if (ar[i] < 0)
        then
            Result := Result * ar[i];
    ZadA := Result;
end;
 
function ZadB(const ar: TLine; const n: Byte): Double;
var
    Result: Double; //удалить строку при ошибке повторного объявления идентификатора
    i, iMax: Byte;
begin
    iMax := 0;
    for i := 1 to n - 1 do
        if (ar[i] > ar[iMax])
        then
            iMax := i;
    Result := 0; i := 0;
    while (i < iMax) do
    begin
        Result := Result + ar[i];
        Inc(i);
    end;
    ZadB := Result;
end;
 
procedure ZadC(var ar: TLine; const n: Byte);
procedure Swap(var x, y: Real);
var
    z: Real;
begin
    z := x;
    x := y;
    y := z;
end;
var
    i: Byte;
begin
    for i := 0 to (n - 1) div 2 do
        Swap(ar[i], ar[n - i - 1]);
end;
 
var
    ar: TLine;
    n: Byte;
begin
    InitArray(ar, n);
    WriteLn('A=', ZadA(ar, n):0:2);
    WriteLn('B=', ZadB(ar, n):0:2);
    ZadC(ar, n); PrintArray(ar, n);
end.

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

  1. В функции ZadA используется цикл for, который выполняется n-1 раз, где n - введенное с клавиатуры число. Внутри цикла проверяется условие if (ar[i] < 0), если оно истинно, то значение переменной Result умножается на значение элемента массива ar[i]. Это происходит для каждого элемента массива от 0 до n-1.
  2. Функция ZadB также использует цикл for, который выполняется n-1 раз. Внутри цикла проверяется условие if (ar[i] > ar[iMax]), если оно истинно, то значение переменной iMax устанавливается равным значению переменной i. Затем значение переменной Result инициализируется как 0, а переменная i устанавливается равной 0. Затем начинается вложенный цикл while (i < iMax), в котором значение переменной Result увеличивается на текущее значение элемента массива ar[i], а затем переменная i инкрементируется. После окончания вложенного цикла значение переменной Result присваивается переменной z, значение переменной x устанавливается равным значению переменной y, а значение переменной y устанавливается равным значению переменной z.
  3. В функции ZadC сначала вызывается функция Swap, которая меняет местами два элемента массива. Затем вызывается функция ZadC с аргументами ar и n. После этого выводится сообщение с результатами вычислений функций ZadA и ZadB.
  4. В функции PrintArray используется цикл for, который выполняется n раз. Внутри цикла выводится значение каждого элемента массива ar[i] с помощью функции Write.
  5. В функции InitArray считывается число n с клавиатуры, пока не будет введено положительное число. Затем вызывается функция Randomize, чтобы инициализировать генератор случайных чисел. Затем в цикле for вычисляется произведение всех элементов массива ar с помощью функции ZadA. Наконец, выводится результат вычислений с помощью функции WriteLn.

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


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

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

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