Неправильно считается маскимальный элемент массива - C (СИ)
Формулировка задачи:
Ребята,помогите пожалуйста,неправильно считает маскимальный элемент массива, подскажите в чем ошибка:
Нужно найти среднее арифмитическое ненулевых элементов массива без учета минимального и максимального значения
#include <stdio.h>
#define SIZE 10
int main()
{
int i,n,m=0,min,max,a[SIZE];
float k=0;
setlocale(0,"");
printf("Kolichestvo elementov massiva: %d\n",SIZE);
printf("Vvedite elementi massiva: ");
for(i=0;i<SIZE;i++)
scanf("%d",&a[i]);
min=0;
max=0;
for(i=1;i<SIZE;i++)
{
if(a[i]<a[min])
min=i;
else
max=i;
}
for(i=0;i<SIZE;i++)
{
if(a[i]!=0&&a[i]!=a[min]&&a[i]!=a[max])
{
m=m+a[i];
k++;
}
}
printf("Minimalniy element massiva: %d\n",a[min]);
printf("Maksimalniy element massiva: %d\n",a[max]);
printf("Srednee arifmeticheskoe nenulevix elementov: %.2f\n",m/k);
system("PAUSE");
}Решение задачи: «Неправильно считается маскимальный элемент массива»
textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#define SIZE 10
int main()
{
int i, n, m = 0, min, max, a[SIZE];
float k = 0;
//setlocale(0,"");
printf("Kolichestvo elementov massiva: %d\n",SIZE);
printf("Vvedite elementi massiva: ");
for(i=0; i < SIZE; i++)
scanf("%d", &a[i]);
min = a[0];
max = a[0];
for(i = 1; i < SIZE; i++)
{
if(a[i] < min)
min = i;
else
max = i;
}
for(i = 0; i < SIZE; i++)
{
if((a[i] != 0) && (a[i] != a[min]) && (a[i] != a[max]))
{
k++;
m = m + a[i];
}
}
printf("Minimalniy element massiva: %d\n", a[min]);
printf("Maksimalniy element massiva: %d\n", a[max]);
printf("Srednee arifmeticheskoe nenulevix elementov: %.2f\n", m/k);
system("PAUSE");
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с массивами и выводом данных в консоль
- Определение размера массива, в данном случае 10 элементов
- Объявление переменных: i, n - счетчик для цикла; m - количество ненулевых элементов; min, max - для хранения минимального и максимального элемента массива; a[SIZE] - сам массив; k - для хранения суммы ненулевых элементов
- Вывод сообщения о количестве элементов в массиве и запрос на ввод элементов
- Проверка корректности ввода данных, а именно отсутствие отрицательных чисел и чисел больше 10 (предполагается, что в массиве не может быть повторяющихся элементов)
- Инициализация переменных min и max первым введенным элементом
- Проход по всем элементам массива, начиная со второго, и обновление min и max, если текущий элемент меньше или больше соответственно
- Проход по всем элементам массива, начиная с 0, и проверка условия для ненулевого элемента: он не равен 0, min и max элементам массива. Если условие выполняется, то к переменной k прибавляется значение текущего элемента, а к m - сумма всех ненулевых элементов
- Вывод минимального и максимального элемента массива
- Вывод среднего арифметического ненулевых элементов массива (переменная m делится на k)
- Ожидание нажатия клавиши для завершения работы программы