Найти среднее арифметическое элементов, лежащих после минимального значения массива - C (СИ)

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

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

Доброго времени суток. Мне нужна помощь в решении задачи. Необходимо посчитать среднее арифметическое значение, лежащее после минимального значения в массиве. Т.е. дан, например, массив: -5 -6 1 3 4 2. Минимальное значение = -6, значит посчитать нужно все числа, которые находятся правее -6. Вот код
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int main(){
   srand(time(NULL)); 
   
   int B[N], min, k = 0;
   float sum = 0;
   
   //Заносим рандомные значения в элементы массива и выводим их на экран-----
   for (int i = 0; i < N; i++){
       B[i] = rand()%11 - 5;
       printf("%-5d", B[i]);
           }
   //------------------------------------------------------------------------      

    //Присваиваем минимальному значению значение из 0-го элемента массива ---
min = B[0];    
    //------------------------------------------------------------------------  
       
    //Находим минимальное значение в массиве и выводим его на экран ----------
    for (int i = 0; i < N; i++){
        if(min > B[i]){
            min = B[i];
            }
        }  
        printf("\n\t***MinimalZnach = %d***", min);
    //------------------------------------------------------------------------

    return(0);
}
Я, собсна, не могу понять, как сложить числа, находящиеся после минимума. Подскажите плез, я пока еще совсем новичок. Спасибо

Решение задачи: «Найти среднее арифметическое элементов, лежащих после минимального значения массива»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int B[] = { -5, -6, 1, 3, 4, 2 };
    size_t n = sizeof(B) / sizeof(B[0]);
 
    size_t min_index = 0;
    int sum = 0;
 
    for(size_t i = 1; i < n; i++) {
        if(B[i] <= B[min_index]){
            sum = 0;
            min_index = i;
        } else {
            sum += B[i];
        }
    }
 
    float avg = 0.0f;
    if(n > 1) avg = (float)sum / (n - min_index - 1);
    printf("%f\n", avg);
 
    return 0;
}

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

  1. Объявлен массив B типа int со значениями -5, -6, 1, 3, 4, 2.
  2. Объявлена переменная n типа size_t, которая инициализируется значением, равным результату деления размера массива B на размер одного элемента массива B[0].
  3. Объявлены переменные min_index и sum типа size_t, которые инициализируются значениями 0.
  4. В цикле for, начиная со второго элемента массива B и до предпоследнего элемента, проверяется, является ли текущий элемент меньше или равен минимальному элементу, хранящемуся в переменной min_index.
  5. Если текущий элемент меньше или равен минимальному элементу, то обновляется значение переменной sum, а переменная min_index заменяется на индекс текущего элемента.
  6. Если текущий элемент больше минимального элемента, то к переменной sum прибавляется значение текущего элемента.
  7. После окончания цикла for, объявлена переменная avg типа float, которая инициализируется нулевым значением.
  8. Если размер массива n больше 1, то переменная avg вычисляется как результат деления переменной sum на разность между n и min_index, уменьшенную на единицу.
  9. Значение переменной avg выводится на экран с помощью функции printf.
  10. Возвращается 0, что означает успешный конец работы программы.

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


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

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

5   голосов , оценка 3.6 из 5
Похожие ответы