Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sendwuk en 21 Marzo 2015, 00:22 am



Título: Ayuda en C++ Código que Calcule la Desviación Estándar?
Publicado por: sendwuk en 21 Marzo 2015, 00:22 am
Tiene una matriz 5 filas(califs) x 10columnas(alumnos) llena de datos se desea conocer la desviacion standar de cada alumno y guardarla la de todos en un vector de dimencion 10 de cada .

Imprimir el vector de  las desviaciones estandar al final.

 eso es lo que tengo que desarrollar y el codigo que eh formulado es este


Código
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #define FILAS 5
  5. #define COLUM 10
  6.  
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.  int matriz[FILAS][COLUM] ={
  13.    100,90,80,70,60,50,40,60,70 ,100,
  14.    100,95,65,75,100,99,90,89,79,60,
  15.    100,45,100,90,78,65,100,100,90,76,
  16.    100,90,90,99,82,73,64,68,70,80,
  17.  };
  18.  
  19. int f, c,i,n=1; // Indices de f = filas c= columnas//
  20. int media=0;
  21. int des_std=0;
  22. int acum=0;
  23. int cuadrado=0;
  24. int vector_des[10];
  25.  
  26. for(f=0;f<FILAS;f++)
  27. {
  28.    for(c=0;c<COLUM;c++)
  29.    {
  30.        acum=acum+matriz[f][c];
  31.        media= acum/5;
  32.        cuadrado=cuadrado+((matriz[f][c]-media)*(matriz[f][c]-media));
  33.        des_std=sqrt(cuadrado/4);
  34.        vector_des[i]=des_std;
  35.        i++;
  36.        cout<<" La desviacion estandar del Alumno" <<"  " <<n << " es : " << vector_des[i] <<endl;
  37.        n++;
  38.    }
  39. }
  40.  
  41.  
  42. system("pause");
  43.  
  44.  
  45.  
  46.  
  47. }
  48.  


No entiendo como deben de ir los For, podrian ayudarme un poco

Mod: Al publicar codigo usa las etiquetas GeSHi. Modifica el titulo y coloca uno descriptivo "ayuda" no dice nada


Título: Re: Ayuda en C++ Código que Calcule la Desviación Estándar?
Publicado por: flony en 28 Marzo 2015, 04:02 am
hace una bocha no hago matemáticas ...pero tratare de ayudar
Código:
#include <stdlib.h> /7 cual es la finalidad de esta biblioteca ?
******************
Código:
vector_des[i]=des_std;
recoda este es un vector...que esta corriendo en una matriz...no te olvides del doble for ...seria mejor hacer esa carga fuera de los for.....bueno eso en la parte practica, en la parte lógica que función cumple tener un vector en la cual todos los elementos son el mismo....o sea la varianza o desviación estándar...recordad que la desviacion estandar es solo un numero que vas a obtener del conjunto de datos
*******************
Código:
cout<<" La desviacion estandar del Alumno" <<"  " <<n << " es : " << vector_des[i] <<endl;
Código:
cout << " La desviacion estandar del Alumno " << c << " es : " << des_std  << endl;
esta parte del código se me hace que queres responder si la nota del alumno esta fuera o no de la desviación estándar, para ello deberías realizar otro calculo matemático....o esta mal planteado lo expuesto en pantalla...repito la desviación estándar es solo una  
*******************
bueno para terminar una pagina donde explican como obtener la desviación estándar de una muestra
http://es.wikipedia.org/wiki/Desviaci%C3%B3n_t%C3%ADpica (http://es.wikipedia.org/wiki/Desviaci%C3%B3n_t%C3%ADpica)
*******************
haaa para terminar podrías poner mas copada la matriz para que se pueda llenar por el usuario y no que vos pongas el dato
*******************
creo que para mejorar la matriz deberia ser fila alumno columna nota


Título: Re: Ayuda en C++ Código que Calcule la Desviación Estándar?
Publicado por: Usuario Invitado en 28 Marzo 2015, 15:17 pm
Cálculos paso por paso:

  • Conteo (cantidad de números)
  • Suma (suma de los números)
  • Media (promedio de la suma)
  • Diferencias^2: ( (Numero - media) ^ 2)
  • Varianza (diferencia / conteo)
  • Desviación estándar (Raíz de la varianza)


Código
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.   int data[5][10] ={
  9.   {100,90,80,70,60,50,40,60,70,100},
  10.   {100,95,65,75,100,99,90,89,79,60},
  11.   {100,45,100,90,78,65,100,100,90,76},
  12.   {100,90,90,99,82,73,64,68,70,80},
  13.   {85,90.5,98.3,99,69.8,98.7,89.9,95.4,89,100}
  14. };
  15. double sum[5]; // cantidad de filas = cantidad de alumnos
  16. double avg[5];
  17. double variance[5];
  18. double deviation[5];
  19.  
  20. // sumatorias
  21. for(int row=0; row<5; row++) {
  22. sum[row] = 0;
  23. for(int col=0; col<10; col++) {
  24. // sumatoria de las notas de cada alumno
  25. sum[row] += data[row][col];
  26. }
  27. }
  28.  
  29. // promedios
  30. for(int index=0; index<5; index++) {
  31. avg[index] = sum[index] / (10.0f);
  32. }
  33.  
  34. // varianzas
  35. for(int row=0; row<5; row++) {
  36. variance[row] = 0;
  37. for(int col=0; col<10; col++) {
  38. double range = pow(data[row][col] - avg[row], 2);
  39. variance[row] += range;
  40. }
  41. variance[row] = variance[row] / 10;
  42. }
  43.  
  44. // desviaciones
  45. for(int index=0; index<5; index++) {
  46. deviation[index] = sqrt(variance[index]);
  47. }
  48.  
  49. // imprime las desviaciones
  50. for(int index=0; index<5; index++) {
  51. cout << "La desviación del alumno es: " << deviation[index];
  52. cout << "\n";
  53. }
  54.  
  55. return 0;
  56. }

Citar
La desviación del alumno es: 19.3907
La desviación del alumno es: 13.9556
La desviación del alumno es: 17.5397
La desviación del alumno es: 12.2
La desviación del alumno es: 8.87468