Título: calcular la desviacion estandar de un arreglo (problema)
Publicado por: Yamakasi_Jr 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 :) #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: "); for(i=0; i<dato; i++) { printf(" Introduce los elementos del arreglo: "); } for(i=0; i<dato; 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
Título: Re: calcular la desviacion estandar de un arreglo (problema)
Publicado por: A.I. en 28 Agosto 2017, 04:50 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: "); for(i=0; i<dato; i++) { printf(" Introduce los elementos del arreglo: "); } for(i=0; i<dato; 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 ); }
|