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