Dev - C++ - Ayuda con programa en C sobre estadisticas

 
Vista:
sin imagen de perfil

Ayuda con programa en C sobre estadisticas

Publicado por Maria (1 intervención) el 12/11/2013 17:05:09
Hice este codigo en c para calcular la media, mediana, moda, desviacion standar y varianza de un grupo de datos ingresados. El problema es q el programa hace bien la distribucion de frecuencias y calcula correctamente la media pero los demas datos no los calcula correctamente. Espero q me puedan ayudar, desde ya muchas gracias =)
Este es el codigo:
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
int numero_de_datos;
double varianza=0,moda=0,datos[1000],mayor=0,menor=0,frecuencia[1000],intervalo[100],intervalo2[100],frecabs[100],ireal[100],ireal2[100];
cout<<"DIGITA EL NUMERO DE DATOS A INGRESAR... ";
cin>>numero_de_datos;
for(int i=0;i<numero_de_datos;i++)
{
cout<<"DIGITA EL VALOR DEL DATO NUMER0-->"<<(i+1)<<+" ";
cin>>datos[i];
}
cout<<"TUS DATOS SON.....\n";
for(int i=0;i<numero_de_datos;i++)
{
cout<<datos[i]<<" ";
}
//ordenamento del vector
double aux=0;
for(int i=0;i<numero_de_datos-1;i++)
{
for(int j=0;j<numero_de_datos-1;j++)
{
if(datos[j]>datos[j+1])
{
aux=datos[j];
datos[j]=datos[j+1];
datos[j+1]=aux;
}
}
}
cout<<"\n";
cout<<"TUS DATOS ORDENADOS SON.....\n";
for(int i=0;i<numero_de_datos;i++)
{
cout<<datos[i]<<" ";
}
mayor=datos[0];
menor=datos[0];
cout<<"\n";
for(int i=0;i<numero_de_datos;i++)
{
if(datos[i]>mayor)
mayor=datos[i];
if(datos[i]<menor)
menor=datos[i];
}
cout<<"EL MAYOR ES--> "<<mayor<<"\n";
cout<<"EL MENOR ES--> "<<menor<<"\n";
varianza=10000;
for(int i=0;i<numero_de_datos-1;i++)
{
if(datos[i+1]!=datos[i])
{
if((datos[i+1]-datos[i])<varianza&&varianza!=0)
varianza=(datos[i+1]-datos[i]);
}
}
int intervalos=0;
cout<<"Ingrese la cantidad de clases.";
cin>>intervalos;
float TI=0;
TI=((mayor-menor)+varianza)/intervalos;
TI=round(TI);
cout<<TI;
cout<<"EL TAMAÑO DE INTERVALO ES-->"<<TI;
intervalo[0]=menor;
intervalo2[0]=menor+(TI-1);
for(int i=1;i<=intervalos;i++)
{
intervalo[i]=intervalo2[i-1]+1;
intervalo2[i]=intervalo[i]+TI-1;
}
cout<<"\nLAS CLASES SON.....\n";
for(int i=0;i<intervalos;i++)
{
cout<<intervalo[i]<<"---"<<intervalo2[i]<<"\n";
}
//frecuencias
int contador=0;
for(int j=0;j<intervalos;j++)
{
for(int i=0;i<numero_de_datos;i++)
{
if(datos[i]>=intervalo[j])
{
if(datos[i]<=intervalo2[j])
{
contador++;
}
}
}
frecuencia[j]=contador;
contador=0;
}
int sumfrec=frecuencia[0];
frecabs[0]=frecuencia[0];
for(int i=1;i<intervalos;i++)
{
sumfrec=sumfrec+frecuencia[i];
frecabs[i]=sumfrec;
}
float fre[100],fre2[100];
float marca[100];
for(int i=0;i<intervalos;i++)
{
fre[i]=(frecuencia[i]/numero_de_datos)*100;
}
fre2[0]=fre[0];
float x;
x=fre2[0];
for(int i=1;i<intervalos;i++)
{
x=x+fre[i];
fre2[i]=x;
}
for(int i=0;i<intervalos;i++)
{
marca[i]=(intervalo[i]+intervalo2[i])/2;
}
float MF[100];
for(int i=0;i<intervalos;i++)
{
MF[i]=marca[i]*frecuencia[i];
}
//intervalos reales

ireal2[0]=(intervalo2[0]+intervalo[1])/2;
ireal[0]=(ireal2[0]-TI);
for(int i=1;i<intervalos;i++)
{
ireal[i]=ireal2[i-1];
ireal2[i]=ireal[i]+TI;
}
double sumatorias=0;
for(int i=0;i<intervalos;i++)
{
sumatorias=sumatorias+MF[i];
}
double media=0;
media=sumatorias/numero_de_datos;
int posicion=0;
for(int i=0;i<intervalos;i++)
{
if(media>=ireal[i]&&media<=ireal2[i])
posicion=i;
}
double mediana;
mediana=frecabs[intervalos-1]/2;
for(int i=0;i<intervalos;i++)
{
if(mediana>=ireal[i]&&mediana<=ireal2[i])
posicion=i;
}
if(posicion==0)
mediana=ireal[0]+(((numero_de_datos/2))/(frecabs[posicion]))*TI;
if(posicion!=0)
mediana=ireal[posicion]+(((numero_de_datos/2)-frecabs[posicion-1])/(frecuencia[posicion]))*TI;
mayor=frecuencia[0];
int contador2=1;
for(int i=0;i<intervalos;i++)
{
if(mayor==frecuencia[i])
contador2++;
if(mayor<frecuencia[i])
mayor=frecuencia[i];
}
for(int i=0;i<intervalos;i++)
{
if(mayor==frecuencia[i])
posicion=i;
}
if(posicion==0)
{
moda=ireal[0]+((frecuencia[0])/(frecuencia[0]+(frecuencia[posicion]-frecuencia[posicion+1])))*TI;
}
if(posicion!=0)
{
moda=ireal[posicion]+((frecuencia[posicion]-frecuencia[posicion-1])/((frecuencia[posicion]-frecuencia[posicion-1])+(frecuencia[posicion]-frecuencia[posicion+1])))*TI;
}
double desmedia=0;
double MX[100],FMX[100],MX2[100],FMX2[100];
for(int i=0;i<intervalos;i++)
{
MX[i]=abs(marca[i]-media);
}
for(int i=0;i<intervalos;i++)
{
FMX[i]=frecuencia[i]*MX[i];
}
for(int i=0;i<intervalos;i++)
{
sumatorias=sumatorias+FMX[i];
}
desmedia=sumatorias/numero_de_datos;
for(int i=0;i<intervalos;i++)
{
MX2[i]=abs(marca[i]-media);
}
for(int i=0;i<intervalos;i++)
{
FMX2[i]=frecuencia[i]*pow(MX2[i],2);
}
for(int i=0;i<intervalos;i++)
{
sumatorias=sumatorias+FMX2[i];
}
varianza=sumatorias/numero_de_datos;
cout<<"-----------------------------------------------------------------------------\n";
cout<<" CLASES "<<" FRECUENCIA "<<" FRECUENCIA ABSOLUTA\n";
for(int i=0;i<intervalos;i++)
{
cout<<intervalo[i]<<"---"<<intervalo2[i]<<" "<<frecuencia[i]<<" "<<frecabs[i]<<"\n";
}
cout<<"FRECUENCIA RELATIVA\n";
for(int i=0;i<intervalos;i++)
{
cout<<fre[i]<<"\n";
}
cout<<"FRECUENCIA RELATIVA ACUMULADA\n";
for(int i=0;i<intervalos;i++)
{
cout<<fre2[i]<<"\n";
}
cout<<"PUNTO MEDIO\n";
for(int i=0;i<intervalos;i++)
{
cout<<marca[i]<<"\n";
}
cout<<"PUNTO MEDIO POR FRECUENCIA\n";
for(int i=0;i<intervalos;i++)
{
cout<<MF[i]<<"\n";
}
cout<<"LA MEDIA ES-->"<<media<<"\n";
cout<<"LA MEDIANA ES-->"<<mediana<<"\n";
cout<<"LA MODA ES--->"<<moda<<"\n";
if(contador2>1&&contador2<2)
cout<<"AMODAL";
cout<<"DESVIACION MEDIA-->"<<desmedia;
cout<<"LA VARIANZA ES---->"<<varianza;
cin>>intervalos;
getch();
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder