Вывести получившийся массив в простой программе - 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;
- }
Объяснение кода листинга программы
- В начале программы подключаются необходимые библиотеки: stdio.h для работы с выводом в консоль, malloc.h для работы с динамическим выделением памяти.
- Затем определены переменные:
- SIZE_ARRAY - размер массива, который вводится с клавиатуры;
- minIndex и maxIndex - индексы минимального и максимального элементов массива;
- array - указатель на начало массива;
- min и max - значения минимального и максимального элементов массива;
- sumElements - сумма элементов массива, кроме максимального и минимального;
- average - среднее арифметическое элементов массива.
- Далее программа просит ввести размер массива и считывает его с клавиатуры с помощью функции scanf.
- С помощью функции malloc выделяется память под массив размером SIZE_ARRAY.
- Затем программа просит ввести значения элементов массива и считывает их с клавиатуры с помощью функции scanf.
- В цикле происходит поиск минимального и максимального значений, а также их индексов. При этом значения min и max инициализируются первым элементом массива.
- Вне цикла происходит суммирование элементов массива, кроме максимального и минимального, и вычисление среднего арифметического.
- Затем значения min и max заменяются на среднее арифметическое.
- В цикле выводятся значения элементов массива с помощью функции printf.
- В конце программы освобождается память, выделенная под массив, с помощью функции free.
- Программа завершается возвратом 0 в функции main, что означает успешный конец работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д