Advertisement
Qellex

5.1

Dec 20th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.77 KB | None | 0 0
  1. #include <locale.h>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6.  
  7.  
  8. /*функция ввода массива с клавиатуры*/
  9. void vvodArray(int* a, int n) {
  10.     printf("Введите числа (%i): ", n);
  11.     for (int i = 0; i < n; i++)
  12.         scanf_s("%i", &a[i]);
  13. }
  14.  
  15.  
  16. /*функция заполнения массива случайными числами*/
  17. void randomArray(int* a, int n) {
  18.     srand(time(NULL));
  19.     for (int i = 0; i < n; i++)
  20.         a[i] = rand() % 100;
  21. };
  22.  
  23.  
  24. /*функция вывода массива*/
  25. void vivodArray(int* a, int n) {
  26.     for (int i = 0; i < n; i++)
  27.         printf("%i ", a[i]);
  28.     printf("\n");
  29. };
  30.  
  31.  
  32.  
  33. int main()
  34. {
  35.     setlocale(LC_ALL, "rus");
  36.     int n, k; //количество элементов исходного и полученного массивов
  37.     /*ввод количества элементов исходного массива*/
  38.  
  39.     printf("Введите количество элементов массива: ");
  40.     do {
  41.         scanf_s("%i", &n);
  42.         if (n <= 0)
  43.             printf("Повторите ввод, введите положительное число: ");
  44.     } while (n <= 0);
  45.  
  46.     /*выделение памяти под динамический массив*/
  47.     int* a = (int*)malloc(sizeof(int*) * n);
  48.     printf("Выберите способ ввода массива:\n1-ввод с клавиатуры\n2-заполнение массива случайными числами\n");
  49.        
  50.     /*выбор способа ввода массива*/
  51.         int f;
  52.     do {
  53.         scanf_s("%i", &f);
  54.         if ((f != 1) && (f != 2))
  55.             printf("Введите только 1 или 2: ");
  56.     } while ((f != 1) && (f != 2));
  57.     if (f == 1)
  58.         vvodArray(a, n);
  59.     else
  60.         randomArray(a, n);
  61.  
  62.  
  63.     /*вывод исходного массива*/
  64.     printf("Исходный массив: ");
  65.     vivodArray(a, n);
  66.  
  67.     /*нахождение среднего значения элементов массива*/
  68.     float srznach, count = 0;
  69.     for (int i = 0; i < n; i++) {
  70.         count += a[i];
  71.     }
  72.     srznach = count / n;
  73.  
  74.     /*нахождение наименее и наиболее отклоняющиеся от среднего значения элементов массива*/
  75.     int c = 0, b = 0; /*Номера элементов*/
  76.  
  77.     for (int i = 0; i < n; i++) {
  78.         /*нахождение далекого элемента*/
  79.         if ((fabs(srznach - a[i]) < (fabs(srznach - a[c]))))
  80.             c = i;
  81.         /*нахождение ближнего элемента*/
  82.         if ((fabs(srznach - a[i]) > (fabs(srznach - a[b]))))
  83.             b = i;
  84.     }
  85.     printf("От среднего значения - %f\n наиболее далекий элемент - %i\nнаиболее близкий элемент - %i", srznach, a[b], a[c]);
  86.  
  87.  
  88.     getchar(); getchar();
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement