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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  calcular la desviacion estandar de un arreglo (problema)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: calcular la desviacion estandar de un arreglo (problema)  (Leído 11,425 veces)
Yamakasi_Jr

Desconectado Desconectado

Mensajes: 1


Ver Perfil
calcular la desviacion estandar de un arreglo (problema)
« en: 27 Agosto 2017, 01:41 am »

Hola a todos, tengo un problema con mi código, me piden calcular la desviacion estandar de un arreglo pero al querer hacer la operacion no puedo restar la media(promedio) a los elementos del arreglo por separado y despues sumar el cuadrado de las diferencias. Espero puedan ayudarme :)

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <math.h>
  5.  
  6. int main()
  7. {
  8. int a[100];
  9. int i,dato,elem,promedio,desv,varianza,diferencia,suma;
  10.  
  11. printf("\n Introduce el tamaño del arreglo: ");
  12. scanf("%d", &dato);
  13. printf("\n");
  14.  
  15. for(i=0; i<dato; i++)
  16. {
  17. printf(" Introduce los elementos del arreglo: ");
  18. scanf("%d", &a[i]);
  19. }
  20.  
  21. printf("\n\n");
  22.  
  23. for(i=0; i<dato; i++)
  24. {
  25. printf(" %d", a[i]);
  26. }
  27.  
  28. for(i=0; i<dato; i++)
  29. {
  30. promedio +=(a[i])/(dato);
  31. }
  32. printf("\n\n El promedio de los elementos es: %d", promedio-1);
  33.  
  34. //Diferencia de los elementos
  35. diferencia=diferencia-a[0];
  36. for(i=0; i<dato; i++)
  37. {
  38. diferencia=diferencia-a[i];
  39. }
  40. printf("\nLa diferencia es: %d", diferencia);
  41.  
  42. for(i=0; i<dato; i++)
  43. {
  44. varianza=(diferencia)*(diferencia)/(dato);
  45. }
  46. printf("\n\n La varianza es: %d", varianza);
  47. }


· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex


« Última modificación: 27 Agosto 2017, 02:01 am por engel lex » En línea

A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: calcular la desviacion estandar de un arreglo (problema)
« Respuesta #1 en: 28 Agosto 2017, 04:50 am »


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h> //esta libreria no hace nada aqui, no deberias usarla nunca
  4. #include <math.h> //esta tampoco es necesaria, al menos en este caso
  5.  
  6. int main()
  7. {
  8. int a[100];
  9. int i,dato,elem,promedio,desv,varianza,diferencia,suma; //promedio, suma, varianza y desviacion son datos de coma flotante, debes declararlos como floats
  10.  
  11. printf("\n Introduce el tamaño del arreglo: ");
  12. scanf("%d", &dato);
  13. printf("\n");
  14.  
  15. for(i=0; i<dato; i++)
  16. {
  17. printf(" Introduce los elementos del arreglo: ");
  18. scanf("%d", &a[i]);
  19. }
  20.  
  21. printf("\n\n");
  22.  
  23. for(i=0; i<dato; i++)
  24. {
  25. printf(" %d", a[i]);
  26. }
  27.  
  28. for(i=0; i<dato; i++)
  29. {
  30. promedio +=(a[i])/(dato); // asi haces tantas divisiones como elementos del vector
  31. }
  32.  
  33.       //promedio = promedio /dato; si lo pones aqui haces unicamente una division
  34.  
  35. printf("\n\n El promedio de los elementos es: %d", promedio-1);
  36.  
  37. //Diferencia de los elementos
  38. diferencia=diferencia-a[0]; //esto no sirve para nada, ademas no has inicializado diferencia
  39.        //suma = 0 debes acumular los cuadrados de las diferencias, es el sumatorio tipico en la formula
  40.  
  41. for(i=0; i<dato; i++)
  42. {
  43. diferencia=diferencia-a[i]; //aqui deberia ser diferencia = a[i] - promedio, asi restas la media al elemento
  44.                // suma + = diferencia * diferencia y acumulas los cuadrados
  45. }
  46. printf("\nLa diferencia es: %d", diferencia); //cuidado en los prints, acuerdate que la mayoiri de tus variables deberian ser numeros de coma flotante
  47.  
  48. for(i=0; i<dato; i++) //este bucle no tiene sentido
  49. {
  50. varianza=(diferencia)*(diferencia)/(dato);
  51. }
  52.  
  53.       //varianza = suma / dato, o (dato-1) segun si es una muestra o una poblacion
  54. printf("\n\n La varianza es: %d", varianza);
  55. }


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines