Найти максимальный элемент и среднее арифметическое отрицательных элементов - Pascal ABC

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

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

Задать одномерный массив вещественных чисел X(n), где n<=30.Найти максимальный элемент и среднее арифметическое отрицательных элементов. Найденный максимальный элемент поменять местами с последним элементом массива. Массив задается рандомными числами в заданном диапазоне. Пожалуйста, нужно максимально просто, без наворотов.

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

textual
Листинг программы
const
    MAX = 30;
var
    i, n, nNeg, idMax: 0..MAX;
    a: Array[1..MAX] Of Real;
    sum, aRand, bRand: Real;
begin
    Write('Input left random border: '); ReadLn(aRand);
    repeat
        Write('Input right random border: '); ReadLn(bRand);
    until (bRand > aRand);
    Write('Input n='); ReadLn(n);
    idMax := 1; sum := 0; nNeg := 0;
    Randomize; Write('Original array:');
    for i := 1 to n do
    begin
        a[i] := Random * (bRand - aRand) + aRand;
        Write(' ', a[i]:0:2);
        if (a[i] < 0)
        then
        begin
            Inc(nNeg);
            sum := sum + a[i];
        end;
        if (a[i] > a[idMax])
        then
            idMax := i;
    end;
    WriteLn; Write('Negatives AVR=');
    if (nNeg > 0)
    then
        WriteLn((sum / nNeg):0:2)
    else
        WriteLn('Divide by zero.');
    sum := a[n];
    a[n] := a[idMax];
    a[idMax] := sum;
    Write('Modified array:');
    for i := 1 to n do
        Write(' ', a[i]:0:2);
end.

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

  1. В начале кода объявляются необходимые переменные: MAX, i, n, nNeg, idMax, a, sum, aRand, bRand.
  2. Пользователю предлагается ввести границы случайных чисел для левой и правой части массива. Это делается до тех пор, пока левая граница не станет больше или равной правой.
  3. Затем пользователю предлагается ввести размер массива n.
  4. Инициализируются переменные idMax, sum и nNeg. Переменная idMax устанавливается равной 1, sum - сумме всех элементов массива, nNeg - количеству отрицательных элементов.
  5. В цикле for перебираются элементы массива от 1 до n. Для каждого элемента выполняется следующее:
    • a[i] вычисляется как случайное число в диапазоне от aRand до bRand (включительно), умноженное на разницу между этими значениями и затем прибавленное к aRand.
    • Если a[i] меньше нуля, то увеличивается счетчик nNeg и сумма sum увеличивается на a[i].
    • Если a[i] больше a[idMax], то значение idMax устанавливается равным i.
  6. После завершения цикла выводится сообщение о том, что наибольший элемент равен i (idMax).
  7. Если nNeg больше 0, то выводится среднее арифметическое отрицательных элементов, которое вычисляется как сумма sum, деленная на nNeg.
  8. Затем значение a[n] заменяется на значение a[idMax], а значение a[idMax] заменяется на сумму sum.
  9. Выводится итоговый массив с элементами, выведенными через пробел.
  10. Конец программы.

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

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