viernes, 16 de septiembre de 2011

Moda de un arreglo

En estadística, la moda es el valor con una mayor frecuencia en una distribución de datos.


#include "stdafx.h"
#include "iostream"
#include "conio.h"

using namespace std;

int n;

struct structFrec
{
int element;
int frecuencia;
};

void ordenarvector(int *V)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(V[i]>V[j])
{
int temp = V[i];
V[i] = V[j];
V[j] = temp;
}
}
}
}

//Ordenar una estructura
void ordenarStruct(structFrec *S)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(S[i].frecuencia<S[j].frecuencia)
{
structFrec aux = S[i];
S[i] = S[j];
S[j] = aux;
}
}
}

}

void main()
{
cout<<"Ingrese el numero de elementos: ";cin>>n;

int *V = new int [n];
structFrec *frecuencias = new structFrec[n];

cout<<endl;

for(int i=0;i<n;i++)
{
cout<<"Nro "<<i+1<<" = ";
cin>>V[i];
}

ordenarvector(V);

int iFrec = 0;//Indice que recorrerá la estructura de frecuencias

double contador=1;

for(int i=0;i<n;i++)
{
if(V[i]==V[i+1])
contador++;
else
{
frecuencias[iFrec].element=V[i];
frecuencias[iFrec].frecuencia=contador;
iFrec++;
contador = 1;
}
}

//Ordenamos las frecuencias de MAYOR a MENOR
ordenarStruct(frecuencias);

//El primer elemento será el de mayor frecuencia
int maxFrec = frecuencias[0].frecuencia;

//Los que tengan esa frecuencia son las modas (incluyendo al primer elemento)
cout<<endl<<"MODA(S):"<<endl<<endl;

for(int i=0;i<iFrec;i++)
if(frecuencias[i].frecuencia==maxFrec)
cout<<"Nro: "<<frecuencias[i].element<<" ("<<frecuencias[i].frecuencia<<") veces"<<endl;

_getch();
}

No hay comentarios:

Publicar un comentario