Найти максимальный элемент и среднее арифметическое отрицательных элементов - 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.
Объяснение кода листинга программы
- В начале кода объявляются необходимые переменные: MAX, i, n, nNeg, idMax, a, sum, aRand, bRand.
- Пользователю предлагается ввести границы случайных чисел для левой и правой части массива. Это делается до тех пор, пока левая граница не станет больше или равной правой.
- Затем пользователю предлагается ввести размер массива n.
- Инициализируются переменные idMax, sum и nNeg. Переменная idMax устанавливается равной 1, sum - сумме всех элементов массива, nNeg - количеству отрицательных элементов.
- В цикле for перебираются элементы массива от 1 до n. Для каждого элемента выполняется следующее:
- a[i] вычисляется как случайное число в диапазоне от aRand до bRand (включительно), умноженное на разницу между этими значениями и затем прибавленное к aRand.
- Если a[i] меньше нуля, то увеличивается счетчик nNeg и сумма sum увеличивается на a[i].
- Если a[i] больше a[idMax], то значение idMax устанавливается равным i.
- После завершения цикла выводится сообщение о том, что наибольший элемент равен i (idMax).
- Если nNeg больше 0, то выводится среднее арифметическое отрицательных элементов, которое вычисляется как сумма sum, деленная на nNeg.
- Затем значение a[n] заменяется на значение a[idMax], а значение a[idMax] заменяется на сумму sum.
- Выводится итоговый массив с элементами, выведенными через пробел.
- Конец программы.