Найти среднее арифметическое отрицательных элементов массива. Заменить на него минимальный элемент.

Задача

Написать программу расчета среднего арифметического отрицательных элементов в одномерном массиве. Заменить минимальный элемент в одномерном массиве на полученное среднее арифметическое.

Решение

 

Алгоритм решения задачи: 

  1. Если очередной элемент массива меньше нуля, то увеличиваем счетчик количества элементов (count) и прибавляем значение к значению переменной summa.
  2. Если очередной отрицательный элемент имеет меньшее значение, чем значение, хранимое по индексу min_id, то присваиваем min_id индекс текущего элемента массива.
  3. Вычисляем среднее арифметическое.
  4. Округляем среднее арифметическое до целого и присваиваем его по индексу массива, где содержится минимальный элемент.

Программа на языке Паскаль: 

 

const n = 10;
var
	arr: array[1..n] of integer;
	i, count, summa, min_id: integer;
	mean: real;
begin
    count := 0;
    summa := 0;
    min_id := 0;
 
    for i:=1 to n do begin
		read(arr[i]);
		if arr[i] < 0 then begin
			count := count + 1;
			summa := summa + arr[i];
			if arr[i] < arr[min_id] then
				min_id := i;
		end;
	end;
 
    mean := summa/count;
    arr[min_id] := round(mean);
    writeln('Count: ', count);
    writeln('Mean: ', mean:6:2);
    writeln('New array: ');
    for i:=1 to n do
		write(arr[i], ' ');
	writeln;
end.

 

Пример работы программы:

56 32 -34 99 -56 32 -18 -45 12 -44
Count: 5
Mean: -39.40
New array: 
56 32 -34 99 -39 32 -18 -45 12 -44

 

Тема

Одномерные массивы

Уровень

Простые задачи

Комментарии

Составить код на нахождение среднего геометрического всех целых положительных чисел меньших 10.

var 
    i: byte;
    mult: longint;
    geom: real;
begin
    i := 1;
    mult := 1;
    while i < 10 do begin
        mult := mult * i;
        i := i+1;
    end;
    geom := exp((1.0/i) * ln(mult));
    writeln(geom:10:4);        
end.

Возможно выражение exp((1.0/i) * ln(mult)) не верно.

Добавить комментарий