Создать процедуру, определяющую два элемента, наиболее близкие к среднему - C (СИ)

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

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

Подскажите, пожалуйста, как реализовать данную программу? Желательно с пояснениями. Создать процедуру, определяющую в целочисленном векторе vectorn два элемента, наиболее близкие к среднему арифметическому всех элементов вектора. Элементы, расположенные между ними, отсортировать по возрастанию.

Решение задачи: «Создать процедуру, определяющую два элемента, наиболее близкие к среднему»

textual
Листинг программы
#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=%0.5",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 - x;
    
for (i=1;i<n;i++)
    { 
        k=(*(vector+i)- x); 
        
        if (fabs(k) > abs(l)) 
        {
            r = k; 
            one =*(vector+i); 
        }
        else 
        if (fabs(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 < size - 1; ++i) // i - номер прохода
    {            
        for(j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}

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

Код решает задачу поиска двух элементов, наиболее близких к среднему арифметическому. Для этого используется функция function, которая принимает на вход размер массива, индексы двух элементов, их значения, а также значение искомого среднего арифметического. Список элементов кода:

  1. Объявление переменных:
    • i, n, m, vector_max, vector_min, l (в функции main())
    • t (в функции main())
    • time_t (в функции main())
    • srand (в функции main())
    • vector_min, vector_max, n, vector (в функции main())
    • i, one, two, k, summ, l (в функции function())
    • r (в функции function())
    • x (в функции main())
  2. Ввод данных:
    • Ввод min значения диапазона (в функции main())
    • Ввод max значения диапазона (в функции main())
    • Ввод размера массива (в функции main())
    • Генерация случайных чисел в диапазоне от vector_min до vector_max и заполнение массива (в функции main())
  3. Вывод данных:
    • Вывод размера массива и его элементов (в функции main())
    • Вывод найденных элементов (в функции function())
    • Вывод суммы элементов для получения среднего арифметического (в функции function())
  4. Алгоритм поиска ближайших элементов:
    • Проверка элементов массива на предмет того, являются ли они меньшими или большими искомых значений (в функции function())
    • Сортировка массива (в функции function())
    • Поиск среднего арифметического двух ближайших к искомому значению элементов (в функции function())

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


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

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

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