Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: freddy91 en 02 de Octubre 2016, 11:55

Título: Ejemplo código en c (lenguajeC) que pida datos a usuario y calcule la media
Publicado 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:

Código: [Seleccionar]
#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?
Título: Re:Problema en un código en c
Publicado por: pedro,, en 02 de Octubre 2016, 23:26
Hola freddy91.

El error en tu código está en esta línea:

Código: [Seleccionar]
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
Título: Re:Problema en un código en c
Publicado por: nia en 04 de Octubre 2016, 15:36
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.  :)