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