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 (http://foro.elhacker.net/reglas.htm)
-Engel Lex
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);
}