/* Nombre de Programa:
Autor: Jose Cruz
fecha:
Descripcion:
Programa hecho por Jose Cruz y corregido por Javier Aguilera Gómez
Las correcciones están como comentarios
*/
#include
#include
main()
{
int nmayor,nmenor,numero,suma,contador,contadorneg;
float media;//Hago float en media(en vez de entero) para que muestre decimales
contador=0,suma=0,contadorneg=0;
do{
printf("Introduce un numero:\n");//añado \n para que mejore en lo visual
scanf("%d",&numero);
if(numero<0 and numero!=0){
contadorneg=contadorneg+1;
}
if(contador==0){
nmayor=numero;
nmenor=numero;
}
else if(numero>nmayor and numero!=0){
nmayor=numero;
}
else if(numero nmenor=numero;
}
if(numero!=0){
contador=contador+1;
suma=suma+numero;/*Esta suma debe hacerse solo cuando numero!=0*/
}
}while(numero!=0);
if (contador!=0)/*Esto si era un verdadero error. Si introducias en tu programa como primer valor
un 0 daba un error de sistema. Con este if ya no sucede, mira también el else
final que muestra un mensaje si no existen valores*/
{
media=(float)suma/(float)contador;/*Si no pones float en denominador
y numerador no obtiene decimales, conclusión
tiene que hacer float/float para obtener
float, no int/int para obtener float*/
printf("El mayor de los numeros introducidos es:%d\n",nmayor);
printf("El menor de los numeros introducidos es:%d\n",nmenor);
printf("La media de todos los numeros es:%f\n",media);//pongo %f para que muestre decimales
if (contadorneg>0){
printf("Hay numeros negativos.\n");//añado \n para mejorar en lo visual
}
}else printf("No has introducido ningun valor\n");
system("pause");/*No pusiste el pause, pero no modifica el funcionamiento. Es solo algo visual*/
} /*si lo ejecutas en modo msdos: poniendo CMD en ejecutar en menu inicio, no necesitas PAUSE.
El programa funciona perfectamente Jose, excepto esas tonterías que te he puesto. Revísalas y luego ejecútalo para que veas las diferencias con el tuyo.
El único valor que fallaba era introduciendo un 0 de primeras(daba error en windows), pero viene explicado como comentario dentro del código su corrección.
Le he pasado una batería de 250 numeros entre 1 y 50 y da resultados correctos(revisado con Excell de Office),
El lunes te digo como evitar eso de comprobar que no es 0 en todos los IF.
*/