Функция, определяющая среднее арифметическое элементов между вторыми max и min элементами массива - C (СИ)

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

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

Нашел на форуме программу, цель которой создать функцию, определяющую среднее арифметическое значение элементов вектора vectorn, находящихся между вторыми по значению максимальным и минимальным его элементами. Предусмотреть случай, когда таких элементов нет. Но она не работает, не компилируется
Листинг программы
  1. #include <conio.h>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. int function(int n, int *vector);
  6. int main() {
  7. int i,n,v_max,v_min;//v_max,v_min - диапазоны значений в которых генерируем эл-ты вектора
  8. printf("Input n in vector = ");
  9. scanf("%d",n);
  10. printf("min=");
  11. scanf("%d",v_min);
  12. printf("max=");
  13. scanf("%d",v_max);
  14. int vector[n];
  15. for(i=0;i<n;i++)
  16. *(vector+i)=random(v_max-v_min+1)+v_min;
  17. int t=function(n,&vector);
  18. printf("Среднее арифметическое значение между вторым max и вторым min=%d",t);
  19. }
  20. int function(int n, int *vector)
  21. {
  22. int max1,max2,min1,min2,i,numberMax=0,numberMin=0,temp,k=0,summ=0;
  23. max1=min1=*vector;
  24. for(i=0;i<n;i++) { //находим первые мин. и макс. эл-ты
  25. if (*(vector+i)>max1) max1=*(vector+i);
  26. if (*(vector+i)<min1) min1=*(vector+i);
  27. }
  28. min2=max1;
  29. max2=min1;
  30. for(i=0;i<n;i++) { //находим вторые по знач. мax и min (min2,max2)
  31. if ((min2>*(vector+i)) && (*(vector+i)!=min1)) {min2=*(vector+i);numberMin=i;}
  32. if ((max2<*(vector+i)) &&(*(vector+i)!=max1)) {max2=*(vector+i);numberMax=i;}
  33. }
  34. if (numberMin>numberMax) {temp=numberMin;numberMin=numberMax;numberMax=temp;}
  35. if((min2==max1) || (max2==min1)) {printf("второго по значению максимума/минимума - нет!");}
  36. else {
  37. for(i=(numberMin+1);i<numberMax;i++) {
  38. summ+=*(vector+i);
  39. k++; //считаем кол-во элементов которые мы суммируем для получения ср. арифметич. знач.
  40. }
  41. }
  42. if (k==0) return 0;
  43. else return summ/k;
  44. }
Подскажите, пожалуйста, что не так

Решение задачи: «Функция, определяющая среднее арифметическое элементов между вторыми max и min элементами массива»

textual
Листинг программы
  1. function(n,vector);

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

  1. Входные параметры функции: n - размер массива, vector - сам массив
  2. Инициализация переменных:
    • max_element - максимальный элемент массива
    • min_element - минимальный элемент массива
    • sum_element - сумма элементов между максимальным и минимальным элементами массива
  3. Присваивание значения max_element первому элементу массива
  4. Проход по всем элементам массива (от второго до предпоследнего) с целью нахождения максимального и минимального элементов
  5. Если текущий элемент больше max_element, присваиваем max_element значение текущего элемента
  6. Если текущий элемент меньше min_element, присваиваем min_element значение текущего элемента
  7. Если текущий элемент больше max_element и текущий элемент меньше min_element, обновляем значение sum_element суммой текущего элемента и max_element
  8. Возвращаем значение sum_element как результат работы функции В итоге функция вычисляет среднее арифметическое элементов между вторым максимальным и вторым минимальным элементами массива

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


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

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

9   голосов , оценка 4.222 из 5

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

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

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