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

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

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

Всем здравствуйте. Программа заменяет max и min целочисленного массива средним арифметическим оставшихся чисел. Помогите, как мне вывести новый массив, в котором min и max заменены? Заранее спасибо.
#include <stdio.h>
  int main()
 
{
 
    float A[20],min,max,s,c,y;
    int i,N1,N2,n;
    printf("Введите размерность массива==>");
    scanf("%d",&n);
    printf("Введите массив: \r\n");
 
    for(i = 0;i<n;i++)
 
    {
        printf("A[%d] = ",i + 1);
        scanf("%f",&A[i]);
    }
 
    min=A[0],max=A[0],N1=0,N2=0;
 
    for(i = 1;i<n;i++)
 
    {
        if(A[i]<min) 
     {
          min=A[i];
          N1 = i + 1;
      }
 
        else
 
        if(max < A[i]) 
      {
           max=A[i];
           N2 = i - 1;
 
       }
       }
        s=0;
        for(i=N1;i<=N2;i++)
 
                s=s+A[i];
 
        y=s/(N2 - N1 + 1);
        min=y;
        max=y;
        puts("Новый массив:\n");
       // тут нужно вывести новый массив.
        return 0;
 
}

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

textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
 
int main()
{
  unsigned int SIZE_ARRAY, minIndex, maxIndex;
  float *array, min, max, sumElements, average;
 
  printf("Enter size array: ");
  scanf("%u", &SIZE_ARRAY);
 
  // Создание динамического массива размером SIZE_ARRAY
  array = (float*)malloc(sizeof(float) * SIZE_ARRAY); 
 
  printf("Enter array: \n");
  for (unsigned int i = 0; i < SIZE_ARRAY; ++i)
    scanf("%f", &array[i]);
 
  // Поиск максимума и минимума, а также их индексов
  min = array[0];
  max = array[0];
  for (unsigned int i = 0; i < SIZE_ARRAY; ++i) 
  {
    if (min > array[i])
    {
      min = array[i];
      minIndex = i; 
    }
    if (max < array[i])
    {
      max = array[i];
      maxIndex = i;  
    }
  }
 
  // Суммирование элементов массива, кроме максимального и минимального
  for (unsigned int i = 0; i < SIZE_ARRAY; ++i) 
  {
    if (i == minIndex || i == maxIndex)
      continue;
 
    sumElements += array[i];
  }
 
  // Среднее арифметическое
  average = sumElements / (SIZE_ARRAY - 2); 
 
  // Замена элементов
  array[minIndex] = average; 
  array[maxIndex] = average;
 
  for (unsigned int i = 0; i < SIZE_ARRAY; ++i)
    printf("%f ", array[i]);   
 
  printf("\n");
 
  free(array);
 
  return 0;  
}

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

  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
Похожие ответы