Определить в векторе 2 числа, наиболее близких к среднему арифметическому всех элементов - C (СИ)

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

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

Определяем в int векторе 2 числа, наиболее близких к средне-арифметическому всех элементов и элементы между этими числами выстраиваем по-возрастанию
Листинг программы
  1. #include <conio.h>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. int function(int n, int *vector);
  7. int main()
  8. {
  9. int i, n, m, vector_max, vector_min, l;
  10. time_t t; // Текущее время для инициализации генератора случайных чисел(рандомайзера)
  11. srand((unsigned) time(&t)); // Инициализация рандомайзера
  12. printf("\nVvedite min znachenie diapazona:"); // Ввод данных
  13. scanf("%d", &vector_min);
  14. printf("\nVvedite max znachenie diapazona:");
  15. scanf("%d", &vector_max);
  16. printf("\nVvedite razmer vectora:");
  17. scanf("%d", &n);
  18. int vector[n];
  19. printf("\nIshodniy Vector:\n");
  20. m=vector_max-vector_min+1;
  21. for(i=0; i<n; i++)
  22. {
  23. vector[i]=rand()%m+vector_min; // Получение случайного числа в диапазоне от vector_min до vector_max
  24. printf("%5d", vector[i]);
  25. }
  26. printf("\n");
  27. for(i=0; i<n; i++)
  28. printf("%5d", vector[i]);
  29. l=function(n, vector);
  30. printf("Srednee arifmeticheskoe znachenie majdu vtorim max i vtorim min=%d",l);
  31. }
  32. void function (int n, int j, int tmp, int *vector, int x)
  33. {
  34. int i, one, two, k=0, summ=0, *l;
  35. one=two=*vector;
  36. printf("\n");
  37. for(i=0; i<n; i++)
  38. printf("%5d", *vector);
  39. i=0;
  40. k=0;
  41. one=0;
  42. two=0;
  43. int r=0;
  44. int fabs (int num);
  45. r=(*(vector+i)-x);
  46. for (i=1;i<n;i++)
  47. {
  48. k=(*(vector+i)- x);
  49. if (abs(k) > abs(*l))
  50. {
  51. r = k;
  52. one =*(vector+i);
  53. }
  54. else
  55. if (abs(k) < abs(*l))
  56. {
  57. r = k;
  58. two =*(vector+i);
  59. }
  60. }
  61. for(i=0; i<n; i++)
  62. {
  63. printf("%5d", *vector);
  64. printf("\none=%d\n", one); // Выводим найденные элементы на экран
  65. printf("\ntwo=%d\n", two);
  66. }
  67. for(i=((one)+1); i<one; i++)
  68. {
  69. summ+=*(vector+i);
  70. k++; //считаем кол-во элементов которые мы суммируем для получения ср. арифметич. знач.
  71. printf("\nk=%d\n", k);
  72. }
  73. for(i = 0; i < n - 1; ++i) // i - номер прохода
  74. {
  75. for(j = 0; j < n - 1; ++j) // внутренний цикл прохода
  76. {
  77. if (vector[j + 1] < vector[j])
  78. {
  79. tmp = vector[j + 1];
  80. vector[j + 1] = vector[j];
  81. vector[j] = tmp;
  82. }
  83. }
  84. }
  85. }

Решение задачи: «Определить в векторе 2 числа, наиболее близких к среднему арифметическому всех элементов»

textual
Листинг программы
  1. int vector[n];

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

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

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


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

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

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы