Вывести получившийся массив в простой программе - 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, что означает успешный конец работы.