Sie sind auf Seite 1von 7

Proyecto 1

Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

1. Disee e implemente un programa en lenguaje C, que calcule la desviacin estndar de un


conjunto de N nmeros.
SOLUCIN
2. Anlisis previo del problema.
Para poder realizar este programa necesitaremos de 6 pasos los cuales se mencionan a
continuacin.
a) Obtener la media o el promedio de la suma de los datos.
b) Restar la media a cada uno de los datos para obtener las desviaciones de los nmeros.
c) Elevar las desviaciones (resultado del inciso b) al cuadrado.
d) Sumar todos los cuadrados del paso c.
e) Dividir la suma de los cuadrados por el nmero total de nmeros menos 1.
f) Sacar la raz cuadrada del paso e y esta es nuestra desviacin estndar.
Ejemplos:

Valores ingresados: 5,6,9,4


P1. Media = 6.
P2.Restamos a cada valor la media= 5-6 = -1; 6-6=0; 9-6=3; 4-6= -2
P3. Elevamos al cuadrado las desviaciones= 1, 0, 9, 4.
P4. Sumamos los cuadrados = 14.
P5. Dividimos entre 4-1= 14/3 = 4.66666
P6. Obtenemos la raz = 2.160 Esta es nuestra desviacin estndar.

Valores ingresados: 3,2,1,5,4


P1. Media = 3
P2.Restamos a cada valor la media= 3-3=0 ; 2-3=-1 ; 1-3=-2 ; 5-3=2 ; 4-3=1.
P3. Elevamos al cuadrado las desviaciones= 0, 1, 4, 4, 1.
P4. Sumamos los cuadrados = 10.
P5. Dividimos entre 5-1= 10/4= 2.5.
P6. Obtenemos la raz = 1.581 Esta es nuestra desviacin estndar.

Valores ingresados: 9, 7
P1. Media = 8.
P2.Restamos a cada valor la media= 9-8=1 ; 7-8= -1
P3. Elevamos al cuadrado las desviaciones= 1 , 1.
P4. Sumamos los cuadrados = 2.
P5. Dividimos entre 2-1 = 2/1 = 2.
P6. Obtenemos la raz = 1.4142 Esta es nuestra desviacin estndar.

Proyecto 1
Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

Valores ingresados: 1, 2, 3, 4, 5, 6
P1. Media = 3.5
P2.Restamos a cada valor la media= -2.25, -1.5, -0.5, 0.5, 1.5, 2.5
P3. Elevamos al cuadrado las desviaciones= 5.0625, 2.25, 0.25, 0.25, 2.25, 6.25
P4. Sumamos los cuadrados = 16.31
P5. Dividimos entre 6-1= 16.31/5 = 3.2625
P6. Obtenemos la raz = 1.806 Esta es nuestra desviacin estndar.
Valores ingresados: 9,8,7,6,5
P1. Media = 7.
P2.Restamos a cada valor la media= 2, 1, 0, -1, -2.
P3. Elevamos al cuadrado las desviaciones= 4, 1, 0, 1, 4.
P4. Sumamos los cuadrados = 10.
P5. Dividimos entre 5-1= 10/4= 2.5
P6. Obtenemos la raz = 1.5811 Esta es nuestra desviacin estndar.

Pseudocdigo
Inicio
Imprimir Dame el numero de valores que deseas ingresar;
Leer n;
Pedir los valores de x[n];
Ir a la funcin media
Sumar los valores de x[n];
Suma=0
Para i=0 ; =<n ; i++
Inicio
Suma= (suma + x[i])/n;
Fin
Regresar suma;
Imprimir la media es suma;
Ir a la funcin desviaciones
Restar la media a los valores de x[n]
Declaramos desv[n];
Para i=0;i<n;i++
Inicio
desv[i]= x[i] suma;
Fin
Regresar desv;
Imprimir La desviacin del conjunto de nmeros es desv
Para i=0 ; i<n ; i++
inicio

Proyecto 1
Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

Cuadrados[i]= x[i]*x[i];
Fin
Ir a la funcin suma
Sum= 0
Para i=0;i<n;i++
sum=sum+ x[i];
fin
regresar sum;
imprimir El resultado de la suma de los cuadrados es sum
ir a la funcin divisin
resultado = sum / (n-1);
regresar resultado
imprimir El resultado de la divisin es resultado;
ir a la funcin raz
desviacion= sqrt(resultado);
regresar desviacion;
imprimirLa desviacion estndar del conjunto de nmeros dados es desviacion;
FIN

Proyecto 1
Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

Codificacin
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
//----------------------------------------------------------------------------------------------------------------------//
float media(float numeros[30],float n){
float suma;
int i;
suma=0.0;
float promedio;
for(i=0;i<n;i++){
suma=suma+numeros[i];
}
suma=suma;
promedio= suma/n;
return promedio;
}
//----------------------------------------------------------------------------------------------------------------------//
float *desviaciones(float numeros[30], float resultado, int n){
float *desv;
int i;
desv=(float*) malloc(sizeof(int)*n);
for (i=0;i<n;i++){
desv[i]= numeros[i]-resultado;
}
return desv;
}
//----------------------------------------------------------------------------------------------------------------------//
float suma(float cuadrados[30], int n){
float sum;
sum = 0.0;
int i;
for(i=0;i<n;i++){
sum=sum+cuadrados[i];
}
return sum;
}

Proyecto 1
Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

//---------------------------------------------------------------------------------------------------------------------//
float division(float sum, float n){
float resultado;
resultado= sum/(n-1);
return resultado;
}
//--------------------------------------------------------------------------------------------------------------------//
float raiz(float div){
float desviacion;
desviacion=sqrt(div);
return desviacion;
}
//-------------------------------------------------------------------------------------------------------------------//
main()
{
int n;
int a;
float resultado;
float suma2;
float cuadrados[30];
float numeros[30];
float *desv;
float div;
float desviacion;
//-------------------------------------------------------------------------------------------------------------------//
printf("\nPrograma que calcula de desviacion estandar de un conjunto de N numeros\n");
printf("\nIntroduce el numero de valores que deseas ingresar\n");
scanf("%i",&n);
for(a=0;a<n;a++){
printf("\nDame el valor %d\n",a);
scanf("%f",&numeros[a]);
}
printf("\n");

Proyecto 1
Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

printf("\nLos datos que ingresaste son : \n");


for(a=0 ; a<n ; a++){
printf("%.1f\n",numeros[a]);
}
//-------------------------------------------------------------------------------------------------------------------//
printf("\n-------------------------------------------------------------------------------\n");
printf("\nPaso No. 1, con los valores dado procedemos a calcular la media\n");
resultado=media(numeros,n);
printf("\nLa media es : %f \n", resultado);
printf("\nPresiona enter para continuar\n");
getch();
//-------------------------------------------------------------------------------------------------------------------//
printf("\n-------------------------------------------------------------------------------\n");
printf("\nPaso No. 2, ahora calculamos la desviacion de cada uno de los numeros\n ");
desv=desviaciones(numeros,resultado,n);
printf("\n");
for (a=0; a<n;a++){
printf("la desviacion del valor %i es : %f\n",a,desv[a]);
}
printf("\nPresiona enter para continuar\n");
getch();
//-------------------------------------------------------------------------------------------------------------------//
printf("\n-------------------------------------------------------------------------------\n");
printf("\nPaso No. 3, elevaremos las desviaciones obteninas en el paso anterior al
cuadrado y las sumaremos\n");
for(a=0;a<n;a++){
cuadrados[a]=desv[a]*desv[a];
}
for(a=0;a<n;a++){
printf("\nEl cuadrado de la desviacion %i es : %.2f\n",a,cuadrados[a]);
}
suma2=suma(cuadrados,n);

Proyecto 1
Garca Gonzlez Eduardo

Programacin Avanzada y Mtodos Numricos

printf("\nLa suma de los cuadrados obtenidos es %.2f\n", suma2);


printf("\nPresiona enter para continuar\n");
getch();
//-------------------------------------------------------------------------------------------------------------------//
printf("\n-------------------------------------------------------------------------------\n");
printf("\n Paso No. 4, dividiremos la suma de cuadrado entre %i - 1\n",n);
div=division(suma2,n);
printf("\nEl resultado de la division es %.2f\n",div);
printf("\nPresiona enter para continuar\n");
getch();
//-------------------------------------------------------------------------------------------------------------------//
printf("\n-------------------------------------------------------------------------------\n");
printf("\nPaso No. 5, por ultimo sacaremos la raiz cuadrada al resultado de la division y
esta sera nuestra Desviacion estandar\n");
desviacion=raiz(div);
printf("\nLa Desviacion Estandar del conjunto de numeros dados es %.2f \n", desviacion);
printf("\nPresiona enter para continuar\n");
getch();
system("cls");
printf("\n\bPrograma creado por Garcia Gonzalez Eduardo\n\b");
getch();
//-------------------------------------------------------------------------------------------------------------------//
}

Das könnte Ihnen auch gefallen