Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda ejercicio media lista n numeros

Estas en el tema de Ayuda ejercicio media lista n numeros en el foro de C/C++ en Foros del Web. Hola a todos. Tengo una duda con un ejercicio que os decribo a continuación. Programa que calcule la media de una lista de n numeros. ...
  #1 (permalink)  
Antiguo 03/11/2008, 12:58
 
Fecha de Ingreso: diciembre-2006
Mensajes: 11
Antigüedad: 17 años, 4 meses
Puntos: 0
Ayuda ejercicio media lista n numeros

Hola a todos. Tengo una duda con un ejercicio que os decribo a continuación.

Programa que calcule la media de una lista de n numeros. Previamente se preguntara al usuario cuantos numeros va a sumar.

He hecho esto:

int i, n, suma;
float media;

printf ("Cuantos numeros vas a sumar?: ");
scanf ("%d", &n);

suma = 0;
media = 0;

for (i = 1; i <= n; i++);
{
printf ("Introduce los %d numeros: ", n);
scanf ("%d", &n);

if (n >= 2)
{
suma += i;
}
else if (n < 2)
printf ("\nDebes introducir mas de un numero para calcular la media");
}
media = suma / n;
printf ("\nLa media de los numeros introducidos es: %.2f", media);

Llevo un rato dándole vueltas y no se donde está el fallo, ya que cambie lo que cambie la media siempre me sale 1 y si introduzco 1 solo numero no me dice: Debes introducit mas de un numero para calcular la media.

Gracias de antemano.

Saludos.

PD: Espero respuesta lo antes posible si puede ser ya que lo tengo que entregar antes de mañana.
  #2 (permalink)  
Antiguo 03/11/2008, 14:03
poi
 
Fecha de Ingreso: octubre-2008
Mensajes: 73
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Ayuda ejercicio media lista n numeros

Segun explicas, creo entender que primero debe comprobar si n>=2 pero eso antes de entrar en el bucle. Es decir haces la comprobacion y si n>=2 haces el bucle donde para cada iteracion se pide un numero que se suma a la variable suma.

Por otra parte cuando haces la division de sum / n eso siempre te va a dar un entero porque estas dividiendo 2 numeros enteros. debes de hacer un casting:

media = (float) suma / n;
  #3 (permalink)  
Antiguo 03/11/2008, 14:23
 
Fecha de Ingreso: diciembre-2006
Mensajes: 11
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Ayuda ejercicio media lista n numeros

Lo de la media está claro, pero lo de comprobar si n>=2 antes de entrar en el bucle como seria? llevo toda la tarde con el ejercicio y tengo un cacao mental que no es ni normal. Si me lo pudieses explicar y poner como seria esa parte te lo agradecería.

Gracias de antemano.

Saludos.
  #4 (permalink)  
Antiguo 03/11/2008, 14:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 34
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Ayuda ejercicio media lista n numeros

1. Debes quitar el ";" al inicio del ciclo for (i = 1; i <= n; i++) //;

2. Error: Estás utilizando la variable "n" para el ciclo "for" (número de elementos) y el mismo tiepo la utilizas dentro del cuerpo del ciclo para recibir los valores numericos a introducir por el usuario. Esto hace que permanentemente se esté modificando el valor de n que tiene el ciclo como referencia.

Por lo tanto, debes declarar otra variable para los números a introducir (Ej. int s;)

3. Error: En la suma estás acumulando el valor del contador "i" y no el valor introducido que se pretende sumar (Ej. suma += s;)

Con esas tres correcciones te debe funcionar bien el programa, aparte de seguir la indicacion que te hicieron anteriormente de sacar del ciclo el condicional.
  #5 (permalink)  
Antiguo 03/11/2008, 14:57
 
Fecha de Ingreso: octubre-2008
Mensajes: 34
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Ayuda ejercicio media lista n numeros

Para aplicar lo que te sugiere "poi" puedes aplicar una iteración DO WHILE
antes del ciclo FOR así:

Código:
do{
   printf ("Cuantos numeros vas a sumar?: ");
   scanf ("%d", &n);
      if (n < 2) printf ("\nDebes introducir mas de un numero para calcular la media\n");
} while (n<2);
y hacer la suma sin condicional
  #6 (permalink)  
Antiguo 03/11/2008, 15:38
 
Fecha de Ingreso: diciembre-2006
Mensajes: 11
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Ayuda ejercicio media lista n numeros

He tenido que quitar el %d del printf ("Introduce los %d numeros: ", &num); y ya me sale.

Gracias a los 2.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:58.