Ayuda en C++ Código que Calcule la Desviación Estándar?

Iniciado por sendwuk, 21 Marzo 2015, 00:22 AM

0 Miembros y 1 Visitante están viendo este tema.

sendwuk

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 (cpp) [Seleccionar]
#include <iostream>
#include <math.h>
#include <stdlib.h>
#define FILAS 5
#define COLUM 10


using namespace std;

int main()
{
 int matriz[FILAS][COLUM] ={
   100,90,80,70,60,50,40,60,70 ,100,
   100,95,65,75,100,99,90,89,79,60,
   100,45,100,90,78,65,100,100,90,76,
   100,90,90,99,82,73,64,68,70,80,
 };

int f, c,i,n=1; // Indices de f = filas c= columnas//
int media=0;
int des_std=0;
int acum=0;
int cuadrado=0;
int vector_des[10];

for(f=0;f<FILAS;f++)
{
   for(c=0;c<COLUM;c++)
   {
       acum=acum+matriz[f][c];
       media= acum/5;
       cuadrado=cuadrado+((matriz[f][c]-media)*(matriz[f][c]-media));
       des_std=sqrt(cuadrado/4);
       vector_des[i]=des_std;
       i++;
       cout<<" La desviacion estandar del Alumno" <<"  " <<n << " es : " << vector_des[i] <<endl;
       n++;
   }
}


system("pause");




}



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

flony

#1
hace una bocha no hago matemáticas ...pero tratare de ayudar
#include <stdlib.h> /7 cual es la finalidad de esta biblioteca ?
******************
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
*******************
cout<<" La desviacion estandar del Alumno" <<"  " <<n << " es : " << vector_des[i] <<endl;
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
*******************
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
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Usuario Invitado

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 (cpp) [Seleccionar]
    #include <iostream>
    #include <math.h>

    using namespace std;

    int main()
    {
      int data[5][10] ={
      {100,90,80,70,60,50,40,60,70,100},
      {100,95,65,75,100,99,90,89,79,60},
      {100,45,100,90,78,65,100,100,90,76},
      {100,90,90,99,82,73,64,68,70,80},
      {85,90.5,98.3,99,69.8,98.7,89.9,95.4,89,100}
    };
    double sum[5]; // cantidad de filas = cantidad de alumnos
    double avg[5];
    double variance[5];
    double deviation[5];

    // sumatorias
    for(int row=0; row<5; row++) {
    sum[row] = 0;
    for(int col=0; col<10; col++) {
    // sumatoria de las notas de cada alumno
    sum[row] += data[row][col];
    }
    }

    // promedios
    for(int index=0; index<5; index++) {
    avg[index] = sum[index] / (10.0f);
    }

    // varianzas
    for(int row=0; row<5; row++) {
    variance[row] = 0;
    for(int col=0; col<10; col++) {
    double range = pow(data[row][col] - avg[row], 2);
    variance[row] += range;
    }
    variance[row] = variance[row] / 10;
    }

    // desviaciones
    for(int index=0; index<5; index++) {
    deviation[index] = sqrt(variance[index]);
    }

    // imprime las desviaciones
    for(int index=0; index<5; index++) {
    cout << "La desviación del alumno es: " << deviation[index];
    cout << "\n";
    }

    return 0;
    }


    CitarLa 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
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein