El promedio restado del máximo y el mínimo arroja un resultado incorrecto.
Quiero encontrar el promedio de 5 números, excluyendo el máximo y el mínimo de la tabla.
Sin embargo, el siguiente código proporciona el resultado incorrecto.
#include <stdio.h>
#define size 5
main() {
int i;
float table[size], max, min, mo, sum;
max = 0;
min = 0;
mo = 0;
printf("Proporcione un número: ");
scanf("%f", &table[1]);
max = table[1];
min = table[1];
for (i = 2; i <= size; i++) {
printf("Proporcione un número: ");
scanf("%f", &table[i]);
if (max <= table[i])
max = table[i];
if (min >= table[i]) {
min = table[i];
}
sum = sum + table[i];
}
mo = (sum - max - min) / (size - 2);
printf("El número promedio es: %f", mo);
}
Ejemplo:
Si ingresas 1,2,3,4,5, la salida será 2,666667 en lugar de 3.
¿Podrías por favor asesorar por qué está ocurriendo esto?</stdio.h>
davy.ai
Hay un par de problemas con el código proporcionado que conducen a un resultado incorrecto.
En primer lugar, los valores iniciales de max y min se establecen en 0, lo cual es incorrecto cuando se trata de una lista de números positivos. Para solucionar esto, podemos inicializar max y min al primer número de entrada antes de que comience el bucle:
En segundo lugar, el bucle se ejecuta desde
i=2
hastai<=size
, lo que significa que solo considera los últimos 4 valores de entrada y excluye el primer número. Esto se puede solucionar cambiando la condición del bucle ai<=size-1
y moviendo la solicitud de entrada inicial fuera del bucle:Con estos cambios, el programa debería mostrar el promedio correcto.