Подсчитать среднее арифметическое для положительных элементов массива - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста с кодом, просто хотя бы посмотреть и разобраться в синтаксисе, само задание не очень сложное. Буду очень благодарен. И если кто сможет, помогите с математической постановкой этой задачи. Очень жду и надеюсь. Спасибо
В массиве, содержащем не более 21 числа, подсчитать среднее арифметическое для положительных элементов. Если среднее больше заданного числа, положительные элементы исходного массива уменьшить на это число, а отрицательные - увеличить. Найти максимальный элемент полученного массива и его номер. Формат числа цц.ц.
Решение задачи: «Подсчитать среднее арифметическое для положительных элементов массива»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
void Print(float *a,int sz)
{
int i;
for(i=0;i<sz;i++)
printf("%6.1f",a[i]);
printf("\n");
}
int main()
{
const int n = 21;
float a[n],av=0,max,avMax;
int i=0,imax,avCount=0,sz;
memset(a,0,sizeof(int));
printf("Enter items of array, max - 21, exit - [-1]\n");
do
{
printf("a[%i] = ",i);
scanf("%f",&a[i]);
if(a[i]>=0)
{
av+=a[i];
avCount++;
}
i++;
}while(a[i-1]!=-1 && i<21);
sz = i-1;
av/=avCount;
Print(a,sz);
printf("Average = %2.1f\n",av);
printf("Digit = ");
scanf("%f",&avMax);
for(i=0;i<sz;i++)
{
if(av>avMax)
if(a[i]<0)a[i]+=avMax;
else a[i]-=avMax;
if(!i)
{
max=a[i];
imax=i;
}
if(a[i]>max)
{
max= a[i];
imax = i;
}
}
Print(a,sz);
printf("Max = %2.1f\nimax = %i",max,imax);
getch();
return 0;
}
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и conio.h
- Определяется функция Print, которая выводит элементы массива на экран
- В функции main создается массив a типа float с размером 21 и инициализируется нулями
- Инициализируются переменные av, max, avMax, i, imax, avCount и sz нулями
- Выводится приглашение для ввода элементов массива
- В цикле do-while считываются элементы массива, проверяется их положительность, суммируются и подсчитываются
- Вычисляется размер массива sz и среднее арифметическое av
- Выводится на экран массив a и его среднее арифметическое av
- Считывается значение avMax
- В цикле for корректируются элементы массива a в соответствии с avMax и максимальным элементом max
- Выводится на экран откорректированный массив a, максимальное значение max и его индекс imax
- Функция main завершается возвратом 0