calcular la desviacion estandar de un arreglo (problema)

Iniciado por Yamakasi_Jr, 27 Agosto 2017, 01:41 AM

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

Yamakasi_Jr

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 :)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

int main()
{
int a[100];
int i,dato,elem,promedio,desv,varianza,diferencia,suma;

printf("\n Introduce el tamaño del arreglo: ");
scanf("%d", &dato);
printf("\n");

for(i=0; i<dato; i++)
{
printf(" Introduce los elementos del arreglo: ");
scanf("%d", &a[i]);
}

printf("\n\n");

for(i=0; i<dato; i++)
{
printf(" %d", a[i]);
}

for(i=0; i<dato; i++)
{
promedio +=(a[i])/(dato);
}
printf("\n\n El promedio de los elementos es: %d", promedio-1);

//Diferencia de los elementos
diferencia=diferencia-a[0];
for(i=0; i<dato; i++)
{
diferencia=diferencia-a[i];
}
printf("\nLa diferencia es: %d", diferencia);

for(i=0; i<dato; i++)
{
varianza=(diferencia)*(diferencia)/(dato);
}
printf("\n\n La varianza es: %d", varianza);
}



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

A.I.

Cita de: Yamakasi_Jr en 27 Agosto 2017, 01:41 AM

#include <stdio.h>
#include <stdlib.h>
#include <conio.h> //esta libreria no hace nada aqui, no deberias usarla nunca
#include <math.h> //esta tampoco es necesaria, al menos en este caso

int main()
{
int a[100];
int i,dato,elem,promedio,desv,varianza,diferencia,suma; //promedio, suma, varianza y desviacion son datos de coma flotante, debes declararlos como floats

printf("\n Introduce el tamaño del arreglo: ");
scanf("%d", &dato);
printf("\n");

for(i=0; i<dato; i++)
{
printf(" Introduce los elementos del arreglo: ");
scanf("%d", &a[i]);
}

printf("\n\n");

for(i=0; i<dato; i++)
{
printf(" %d", a[i]);
}

for(i=0; i<dato; i++)
{
promedio +=(a[i])/(dato); // asi haces tantas divisiones como elementos del vector
}
         
       //promedio = promedio /dato; si lo pones aqui haces unicamente una division

printf("\n\n El promedio de los elementos es: %d", promedio-1);

//Diferencia de los elementos
diferencia=diferencia-a[0]; //esto no sirve para nada, ademas no has inicializado diferencia
        //suma = 0 debes acumular los cuadrados de las diferencias, es el sumatorio tipico en la formula

for(i=0; i<dato; i++)
{
diferencia=diferencia-a[i]; //aqui deberia ser diferencia = a[i] - promedio, asi restas la media al elemento
                // suma + = diferencia * diferencia y acumulas los cuadrados
}
printf("\nLa diferencia es: %d", diferencia); //cuidado en los prints, acuerdate que la mayoiri de tus variables deberian ser numeros de coma flotante

for(i=0; i<dato; i++) //este bucle no tiene sentido
{
varianza=(diferencia)*(diferencia)/(dato);
}

       //varianza = suma / dato, o (dato-1) segun si es una muestra o una poblacion
printf("\n\n La varianza es: %d", varianza);
}