Определить в векторе 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];

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

  1. Вектор представлен массивом переменных типа int, размер которого определяется параметром n.
  2. Вектор инициализируется значениями, которые определяются в цикле от 0 до n-1. Значения могут быть любыми, конкретные значения не оговариваются.
  3. В цикле происходит вычисление среднего арифметического всех элементов вектора.
  4. В цикле также происходит сравнение каждого элемента вектора с текущим средним значением и сохранение двух ближайших к среднему значению элементов в отдельные переменные.
  5. Код не содержит операции вывода на экран, поэтому результаты не отображаются.

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


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

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

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