NIKOLAY_TETUS

Lab_ex1_part1

May 11th, 2022 (edited)
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. /*
  2.  *
  3.  * int используется вместо int, т.к. он позволяет вместить в себя любой
  4.  * индескс массива, вне зависимости от платформы
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <limits.h>
  9.  
  10. //Функции максимума и минимума
  11. #define MIN(a,b) (((a)<(b))?(a):(b))
  12. #define MAX(a,b) (((a)>(b))?(a):(b))
  13.  
  14. #define n 40
  15.  
  16. //Структура - элемент массива
  17. //Содержит индекс и значение элемента
  18. //Используется для удобства и упрощения программы
  19. struct element
  20. {
  21.     int index;   //Индекс элемента
  22.     int value;    //Значение элемента
  23. };
  24.  
  25. int main()
  26. {    
  27.     int elementsAmount = 0; //Количество элементов в массиве
  28.    
  29.     //Вводим количество элементов
  30.     printf("n>");
  31.     scanf("%d", &elementsAmount);
  32.    
  33.     //Проверяем количество элементов
  34.     if (elementsAmount > n)
  35.     {
  36.         //Выводим ошибку
  37.         printf("n должно быть <= 40");
  38.        
  39.         //Выходим из программы
  40.         return 0;
  41.     }
  42.    
  43.     //Инициализируем массив
  44.     int arr[n] = {};
  45.    
  46.     //Вводим элементы массива
  47.     for (int i = 0; i < elementsAmount; i++)
  48.         scanf("%d", &arr[i]);
  49.  
  50.     printf("Исходные данные:\n");
  51.     for (int i = 0; i < elementsAmount; i++)
  52.         printf("%d) %d\n", i, arr[i]);
  53.    
  54.     struct element maxElement,  //Элемент с максимальным значением
  55.                    minElement;  //Элемент с минимальным значением
  56.    
  57.     maxElement.value = INT_MIN;
  58.     minElement.value = INT_MAX;
  59.    
  60.     //Цикл по массиву, до numbersAmount
  61.     for (int i = 0; i < elementsAmount; i++)
  62.     {
  63.         //Проверяем на наибольшее значение
  64.         if (arr[i] > maxElement.value)
  65.         {
  66.             maxElement.value = arr[i];
  67.             maxElement.index = i;
  68.         }
  69.        
  70.         //Проверяем на наименьшее значение
  71.         if (arr[i] < minElement.value)
  72.         {
  73.             minElement.value = arr[i];
  74.             minElement.index = i;
  75.         }
  76.     }
  77.    
  78.     int elementsSum     = 0,    //Сумма элементов в промежутке
  79.         elementsCount   = 0;    //Количество элементов в промежутке
  80.    
  81.     //Цикл между минимальным и максимальным элементом
  82.     for (int i = MIN(minElement.index, maxElement.index);
  83.                 i <= MAX(minElement.index, maxElement.index); i++)
  84.     {
  85.         elementsSum += arr[i];  //Прибавляем к сумме значение текущего элемента
  86.         elementsCount++;        //Увеличиваем счётчик элементов
  87.     }
  88.    
  89.     //Возвращаем среднее арифметическое значение
  90.     printf("%lf", (double)elementsSum / (double)elementsCount);
  91.    
  92.     return 0;
  93. }
Add Comment
Please, Sign In to add comment