Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: freddy91 en 02 de Octubre 2016, 11:55
-
Hola a todos, hace nada que empece a programar en c y estaba haciendo un programa y no sé como arreglarlo. El código en cuestión es este:
#include <stdio.h>
int main()
{
int n,contador;
float suma,media;
suma=0;
contador=0;
n=1;
printf ("Para salir introduzca 0 o un numero negativo\n");
while ((n!=0)&&(n>0)){
printf("Introduzca un numero \n");
scanf("%i",&n);
suma=suma+n;
contador++;
}
media=suma/(contador);
printf("La media es %f",&media);
return 0;
}
Lo que debería hacer es la media de n números y que cuando se introduzca un numero negativo o cero se parara y haga la media, pero el problema es que cuando introduzco el 0 o un negativo me pone que la media es 0. ¿Qué he hecho mal?
-
Hola freddy91.
El error en tu código está en esta línea:
printf("La media es %f",&media);
te sobre el simbolo &.
Aparte, el código se podría mejorar, en el bucle "while" evalúas "((n!=0)&&(n>0))" y en realidad la primera condición de estas no es necesarias, puesto que si se introduce el "0" como valor, ya se está incumpliendo la condición "n>0".
Ya que estás en los inicios de la programación, te recomiendo este curso/tutorial en LenguajeC:
https://www.aprenderaprogramar.es/index.php?option=com_content&view=category&id=82&Itemid=210
Y si estás interesado en algún otro, aquí tienes más:
https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=57&Itemid=86
Saludos. ;D
-
Buenas tardes,
Me gustaría añadir a lo que ha comentado pedro,, que creo que tiene razón.
Yo añadiria una variable aparte para controlar el while y preguntar cada vez que introduces un número si desea continuar introcuciendo números. Si es que si, no sales del while, si es no saldrás del bucle y te calculará la media de los números que has ido introduciendo.
O preguntar al principio cuantos números quiere introducir el usuario para realizar la media.
Ya que tal como lo tienes ahora, en la variable suma se le suma el número 0 o negativo que hace parar el bucle y el contador suma +1; asi que la media no sale correctamente.
Espero haber ayudado y dado alguna idea.
Un saludo. :)