Вывести получившийся массив в простой программе - C (СИ)

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

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

Всем здравствуйте. Программа заменяет max и min целочисленного массива средним арифметическим оставшихся чисел. Помогите, как мне вывести новый массив, в котором min и max заменены? Заранее спасибо.
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4. float A[20],min,max,s,c,y;
  5. int i,N1,N2,n;
  6. printf("Введите размерность массива==>");
  7. scanf("%d",&n);
  8. printf("Введите массив: \r\n");
  9. for(i = 0;i<n;i++)
  10. {
  11. printf("A[%d] = ",i + 1);
  12. scanf("%f",&A[i]);
  13. }
  14. min=A[0],max=A[0],N1=0,N2=0;
  15. for(i = 1;i<n;i++)
  16. {
  17. if(A[i]<min)
  18. {
  19. min=A[i];
  20. N1 = i + 1;
  21. }
  22. else
  23. if(max < A[i])
  24. {
  25. max=A[i];
  26. N2 = i - 1;
  27. }
  28. }
  29. s=0;
  30. for(i=N1;i<=N2;i++)
  31. s=s+A[i];
  32. y=s/(N2 - N1 + 1);
  33. min=y;
  34. max=y;
  35. puts("Новый массив:\n");
  36. // тут нужно вывести новый массив.
  37. return 0;
  38. }

Решение задачи: «Вывести получившийся массив в простой программе»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. int main()
  5. {
  6.   unsigned int SIZE_ARRAY, minIndex, maxIndex;
  7.   float *array, min, max, sumElements, average;
  8.  
  9.   printf("Enter size array: ");
  10.   scanf("%u", &SIZE_ARRAY);
  11.  
  12.   // Создание динамического массива размером SIZE_ARRAY
  13.   array = (float*)malloc(sizeof(float) * SIZE_ARRAY);
  14.  
  15.   printf("Enter array: \n");
  16.   for (unsigned int i = 0; i < SIZE_ARRAY; ++i)
  17.     scanf("%f", &array[i]);
  18.  
  19.   // Поиск максимума и минимума, а также их индексов
  20.   min = array[0];
  21.   max = array[0];
  22.   for (unsigned int i = 0; i < SIZE_ARRAY; ++i)
  23.   {
  24.     if (min > array[i])
  25.     {
  26.       min = array[i];
  27.       minIndex = i;
  28.     }
  29.     if (max < array[i])
  30.     {
  31.       max = array[i];
  32.       maxIndex = i;  
  33.     }
  34.   }
  35.  
  36.   // Суммирование элементов массива, кроме максимального и минимального
  37.   for (unsigned int i = 0; i < SIZE_ARRAY; ++i)
  38.   {
  39.     if (i == minIndex || i == maxIndex)
  40.       continue;
  41.  
  42.     sumElements += array[i];
  43.   }
  44.  
  45.   // Среднее арифметическое
  46.   average = sumElements / (SIZE_ARRAY - 2);
  47.  
  48.   // Замена элементов
  49.   array[minIndex] = average;
  50.   array[maxIndex] = average;
  51.  
  52.   for (unsigned int i = 0; i < SIZE_ARRAY; ++i)
  53.     printf("%f ", array[i]);  
  54.  
  55.   printf("\n");
  56.  
  57.   free(array);
  58.  
  59.   return 0;  
  60. }

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

  1. В начале программы подключаются необходимые библиотеки: stdio.h для работы с выводом в консоль, malloc.h для работы с динамическим выделением памяти.
  2. Затем определены переменные:
    • SIZE_ARRAY - размер массива, который вводится с клавиатуры;
    • minIndex и maxIndex - индексы минимального и максимального элементов массива;
    • array - указатель на начало массива;
    • min и max - значения минимального и максимального элементов массива;
    • sumElements - сумма элементов массива, кроме максимального и минимального;
    • average - среднее арифметическое элементов массива.
  3. Далее программа просит ввести размер массива и считывает его с клавиатуры с помощью функции scanf.
  4. С помощью функции malloc выделяется память под массив размером SIZE_ARRAY.
  5. Затем программа просит ввести значения элементов массива и считывает их с клавиатуры с помощью функции scanf.
  6. В цикле происходит поиск минимального и максимального значений, а также их индексов. При этом значения min и max инициализируются первым элементом массива.
  7. Вне цикла происходит суммирование элементов массива, кроме максимального и минимального, и вычисление среднего арифметического.
  8. Затем значения min и max заменяются на среднее арифметическое.
  9. В цикле выводятся значения элементов массива с помощью функции printf.
  10. В конце программы освобождается память, выделенная под массив, с помощью функции free.
  11. Программа завершается возвратом 0 в функции main, что означает успешный конец работы.

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


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

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

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

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

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

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