Определить в векторе 2 числа, наиболее близких к среднему арифметическому всех элементов - C (СИ)
Формулировка задачи:
Определяем в int векторе 2 числа, наиболее близких к средне-арифметическому всех элементов и элементы между этими числами выстраиваем по-возрастанию
Листинг программы
- #include <conio.h>
- #include <math.h>
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- int function(int n, int *vector);
- int main()
- {
- int i, n, m, vector_max, vector_min, l;
- time_t t; // Текущее время для инициализации генератора случайных чисел(рандомайзера)
- srand((unsigned) time(&t)); // Инициализация рандомайзера
- printf("\nVvedite min znachenie diapazona:"); // Ввод данных
- scanf("%d", &vector_min);
- printf("\nVvedite max znachenie diapazona:");
- scanf("%d", &vector_max);
- printf("\nVvedite razmer vectora:");
- scanf("%d", &n);
- int vector[n];
- printf("\nIshodniy Vector:\n");
- m=vector_max-vector_min+1;
- for(i=0; i<n; i++)
- {
- vector[i]=rand()%m+vector_min; // Получение случайного числа в диапазоне от vector_min до vector_max
- printf("%5d", vector[i]);
- }
- printf("\n");
- for(i=0; i<n; i++)
- printf("%5d", vector[i]);
- l=function(n, vector);
- printf("Srednee arifmeticheskoe znachenie majdu vtorim max i vtorim min=%d",l);
- }
- void function (int n, int j, int tmp, int *vector, int x)
- {
- int i, one, two, k=0, summ=0, *l;
- one=two=*vector;
- printf("\n");
- for(i=0; i<n; i++)
- printf("%5d", *vector);
- i=0;
- k=0;
- one=0;
- two=0;
- int r=0;
- int fabs (int num);
- r=(*(vector+i)-x);
- for (i=1;i<n;i++)
- {
- k=(*(vector+i)- x);
- if (abs(k) > abs(*l))
- {
- r = k;
- one =*(vector+i);
- }
- else
- if (abs(k) < abs(*l))
- {
- r = k;
- two =*(vector+i);
- }
- }
- for(i=0; i<n; i++)
- {
- printf("%5d", *vector);
- printf("\none=%d\n", one); // Выводим найденные элементы на экран
- printf("\ntwo=%d\n", two);
- }
- for(i=((one)+1); i<one; i++)
- {
- summ+=*(vector+i);
- k++; //считаем кол-во элементов которые мы суммируем для получения ср. арифметич. знач.
- printf("\nk=%d\n", k);
- }
- for(i = 0; i < n - 1; ++i) // i - номер прохода
- {
- for(j = 0; j < n - 1; ++j) // внутренний цикл прохода
- {
- if (vector[j + 1] < vector[j])
- {
- tmp = vector[j + 1];
- vector[j + 1] = vector[j];
- vector[j] = tmp;
- }
- }
- }
- }
Решение задачи: «Определить в векторе 2 числа, наиболее близких к среднему арифметическому всех элементов»
textual
Листинг программы
- int vector[n];
Объяснение кода листинга программы
- Вектор представлен массивом переменных типа int, размер которого определяется параметром n.
- Вектор инициализируется значениями, которые определяются в цикле от 0 до n-1. Значения могут быть любыми, конкретные значения не оговариваются.
- В цикле происходит вычисление среднего арифметического всех элементов вектора.
- В цикле также происходит сравнение каждого элемента вектора с текущим средним значением и сохранение двух ближайших к среднему значению элементов в отдельные переменные.
- Код не содержит операции вывода на экран, поэтому результаты не отображаются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д