Функция, определяющая среднее арифметическое элементов между вторыми max и min элементами массива - C (СИ)
Формулировка задачи:
Нашел на форуме программу, цель которой создать функцию, определяющую среднее арифметическое значение элементов вектора vectorn, находящихся между вторыми по значению максимальным и минимальным его элементами. Предусмотреть случай, когда таких элементов нет.
Но она не работает, не компилируется
Подскажите, пожалуйста, что не так
#include <conio.h> #include <math.h> #include <stdio.h> #include <time.h> int function(int n, int *vector); int main() { int i,n,v_max,v_min;//v_max,v_min - диапазоны значений в которых генерируем эл-ты вектора printf("Input n in vector = "); scanf("%d",n); printf("min="); scanf("%d",v_min); printf("max="); scanf("%d",v_max); int vector[n]; for(i=0;i<n;i++) *(vector+i)=random(v_max-v_min+1)+v_min; int t=function(n,&vector); printf("Среднее арифметическое значение между вторым max и вторым min=%d",t); } int function(int n, int *vector) { int max1,max2,min1,min2,i,numberMax=0,numberMin=0,temp,k=0,summ=0; max1=min1=*vector; for(i=0;i<n;i++) { //находим первые мин. и макс. эл-ты if (*(vector+i)>max1) max1=*(vector+i); if (*(vector+i)<min1) min1=*(vector+i); } min2=max1; max2=min1; for(i=0;i<n;i++) { //находим вторые по знач. мax и min (min2,max2) if ((min2>*(vector+i)) && (*(vector+i)!=min1)) {min2=*(vector+i);numberMin=i;} if ((max2<*(vector+i)) &&(*(vector+i)!=max1)) {max2=*(vector+i);numberMax=i;} } if (numberMin>numberMax) {temp=numberMin;numberMin=numberMax;numberMax=temp;} if((min2==max1) || (max2==min1)) {printf("второго по значению максимума/минимума - нет!");} else { for(i=(numberMin+1);i<numberMax;i++) { summ+=*(vector+i); k++; //считаем кол-во элементов которые мы суммируем для получения ср. арифметич. знач. } } if (k==0) return 0; else return summ/k; }
Решение задачи: «Функция, определяющая среднее арифметическое элементов между вторыми max и min элементами массива»
textual
Листинг программы
function(n,vector);
Объяснение кода листинга программы
- Входные параметры функции:
n
- размер массива,vector
- сам массив - Инициализация переменных:
max_element
- максимальный элемент массиваmin_element
- минимальный элемент массиваsum_element
- сумма элементов между максимальным и минимальным элементами массива
- Присваивание значения
max_element
первому элементу массива - Проход по всем элементам массива (от второго до предпоследнего) с целью нахождения максимального и минимального элементов
- Если текущий элемент больше
max_element
, присваиваемmax_element
значение текущего элемента - Если текущий элемент меньше
min_element
, присваиваемmin_element
значение текущего элемента - Если текущий элемент больше
max_element
и текущий элемент меньшеmin_element
, обновляем значениеsum_element
суммой текущего элемента иmax_element
- Возвращаем значение
sum_element
как результат работы функции В итоге функция вычисляет среднее арифметическое элементов между вторым максимальным и вторым минимальным элементами массива
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д