Подсчитать среднее арифметическое для положительных элементов массива - C (СИ)

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

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

Здравствуйте! Помогите пожалуйста с кодом, просто хотя бы посмотреть и разобраться в синтаксисе, само задание не очень сложное. Буду очень благодарен. И если кто сможет, помогите с математической постановкой этой задачи. Очень жду и надеюсь. Спасибо В массиве, содержащем не более 21 числа, подсчитать среднее арифметическое для положительных элементов. Если среднее больше заданного числа, положительные элементы исходного массива уменьшить на это число, а отрицательные - увеличить. Найти максимальный элемент полученного массива и его номер. Формат числа цц.ц.

Решение задачи: «Подсчитать среднее арифметическое для положительных элементов массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. void Print(float *a,int sz)
  4. {
  5.     int i; 
  6.     for(i=0;i<sz;i++)
  7.         printf("%6.1f",a[i]);
  8.     printf("\n");
  9. }
  10. int main()
  11. {
  12.     const int n = 21;
  13.     float a[n],av=0,max,avMax;
  14.     int i=0,imax,avCount=0,sz;
  15.     memset(a,0,sizeof(int));
  16.     printf("Enter items of array, max - 21, exit - [-1]\n");
  17.     do
  18.     {
  19.         printf("a[%i] = ",i);
  20.         scanf("%f",&a[i]);
  21.         if(a[i]>=0)
  22.         {
  23.             av+=a[i];
  24.             avCount++;
  25.         }
  26.         i++;
  27.     }while(a[i-1]!=-1 && i<21);
  28.     sz = i-1;
  29.     av/=avCount;
  30.     Print(a,sz);
  31.     printf("Average = %2.1f\n",av);
  32.     printf("Digit = ");
  33.     scanf("%f",&avMax);
  34.     for(i=0;i<sz;i++)
  35.     {
  36.         if(av>avMax)
  37.             if(a[i]<0)a[i]+=avMax;
  38.             else a[i]-=avMax;
  39.         if(!i)
  40.         {
  41.             max=a[i];
  42.             imax=i;
  43.         }
  44.         if(a[i]>max)
  45.         {
  46.             max= a[i];
  47.             imax = i;
  48.         }
  49.     }
  50.     Print(a,sz);
  51.     printf("Max = %2.1f\nimax = %i",max,imax);
  52.     getch();
  53.     return 0;
  54. }

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

  1. Включаются заголовочные файлы stdio.h и conio.h
  2. Определяется функция Print, которая выводит элементы массива на экран
  3. В функции main создается массив a типа float с размером 21 и инициализируется нулями
  4. Инициализируются переменные av, max, avMax, i, imax, avCount и sz нулями
  5. Выводится приглашение для ввода элементов массива
  6. В цикле do-while считываются элементы массива, проверяется их положительность, суммируются и подсчитываются
  7. Вычисляется размер массива sz и среднее арифметическое av
  8. Выводится на экран массив a и его среднее арифметическое av
  9. Считывается значение avMax
  10. В цикле for корректируются элементы массива a в соответствии с avMax и максимальным элементом max
  11. Выводится на экран откорректированный массив a, максимальное значение max и его индекс imax
  12. Функция main завершается возвратом 0

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


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

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

7   голосов , оценка 3.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы