elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  obtener la media de una serie de números
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener la media de una serie de números  (Leído 3,980 veces)
minette1988

Desconectado Desconectado

Mensajes: 53


Ver Perfil
obtener la media de una serie de números
« en: 22 Junio 2010, 20:21 pm »

Hola, quiero obtener la media de una serie de números almacenados en un vector. He definido un vector de 100 elementos, pero no lo quiero llenar todo. Uso el bucle while  para introducir la cantidad de números que yo quiera. En el momento que me pregunta otro? le doy que no y me sale esto: La media es -36046567217453303226519490776462834093195326687546261483049571502083785345215250433915316893387385717851675440677491564514894938068961058035063788649341798672398777324866008790631210573116460943674979154620314287199762365252556423138115833356791091699933773824.000000

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TAM 100
  5.  
  6. int main(){
  7.        double v[TAM];
  8.        int i=0;
  9.        char op='s';
  10.        double media = 0.0;
  11.  
  12.        while((op == 's' || op == 'S') && i < TAM){
  13.            printf("Introduce un número: ");
  14.            scanf("%lf", &v[i]);
  15.            i++;
  16.            printf("Otro? (s/n)");
  17.            scanf("%1s", &op);
  18.        }
  19.  
  20.  
  21.        for(i=0; i<TAM; i++){
  22.           media += v[i];
  23.        }
  24.        media = media/TAM;
  25.        printf("La media es %lf\n", media);  
  26. }
  27.  


En línea

@synthesize
Wiki

Desconectado Desconectado

Mensajes: 640


Another Brick in the Wall


Ver Perfil WWW
Re: obtener la media de una serie de números
« Respuesta #1 en: 22 Junio 2010, 20:26 pm »

Plantea mejor el algoritmo antes de pasar a programar...  :P


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: obtener la media de una serie de números
« Respuesta #2 en: 22 Junio 2010, 20:47 pm »

tu problema está aqui:

Código
  1. for(i=0; i<TAM; i++){
  2.           media += v[i];
  3.        }

Ahí lo que estás haciendo es recorrer el vector de 100 elementos v. A menos que introduzcas 100 elementos en ese vector anteriormente, vas a tener un problema de acceder a elementos no declarados, lo cual, va a coger valores bastante... aleatorios.

Código
  1. media = media/TAM;
Por otra parte, tu siempre divides la suma del vector entre 100, aunque no siempre usas 100. Mejor divide por el contador de números que has recogido.

La solución podría pasar por dos opciones:

a) Definirte otro contador, y ese bucle hacer un recorrido desde 0 hasta i :
Código
  1. for(j=0; j<i; j++){
  2.           media += v[[b]j[/b]];
  3.        }
  4. media/i;

b) o que en el momento que introduces los números, los guardes directamente en media (esta es una opción poco recomendable si luego se les va a dar otro uso a los números, como moda etc):

Código
  1. while((op == 's' || op == 'S') && i < TAM){
  2.            printf("Introduce un número: ");
  3.            scanf("%lf", &[b]media[/b]);
  4.            i++;
  5.            printf("Otro? (s/n)");
  6.            scanf("%1s", &op);
  7.        }
  8. media=media/i;
  9.  
  10.  
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: obtener la media de una serie de números
« Respuesta #3 en: 22 Junio 2010, 21:32 pm »

Aparte de lo que ya te dijeron, error aquí:

Código:
 scanf("%1s", &op);
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: obtener la media de una serie de números
« Respuesta #4 en: 23 Junio 2010, 03:17 am »

Ademas de lo ya mencionado, yo te recomendaria usar un do-while; ya que ademas de ahorrarte una comprobacion queda mas elegante en el codigo.

Otra cosa es usar fflush( stdout ); entre printf() y scanf()

Salu10.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calcular moda, mediana, media aritmética, media geométrica de n números en C « 1 2 »
Programación C/C++
ERIK546 13 53,926 Último mensaje 30 Noviembre 2013, 19:31 pm
por EnriqueRodriguezM
serie de numeros en fichero
Programación C/C++
m@o_614 4 2,700 Último mensaje 24 Septiembre 2013, 06:14 am
por rir3760
DESPLEGAR SERIE DE NUMEROS
Programación C/C++
codelau21 2 1,708 Último mensaje 3 Noviembre 2015, 04:06 am
por Zodiak98
Serie de numeros en C
Programación C/C++
acer-x 2 1,457 Último mensaje 16 Mayo 2018, 15:42 pm
por acer-x
Ayuda sobre factor comunde una serie de numeros
Hacking
jabrajam 0 2,375 Último mensaje 7 Abril 2020, 16:20 pm
por jabrajam
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines