Como todos sabemos la moda es un termino que se utiliza en Estadística para saber cual es el numero que mas se repite.
Mi programa ordena números aleatorios y arroja la media la mediana y la moda y al estarlo corriendo me di cuenta que si hay mas de un número que se repite mas, entonces imprime el ultimo que se repitió en vez de los 2 o 3 que se repitieron aquí esta el código:
Código:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void main (void)
{
clrscr();
int arreglo[10],f[10]={0},fg[10]={0} ,x,auxm=0,mod,c=0;
float Prom=0;
randomize();
cout<<"moda mediana media"<<endl;
for (int i=0;i<10;i++)
{
arreglo[i]=random(10)+1;
cout<<arreglo[i]<<" ";
}
getch();
for(int j=0;j<10;j++)
{
for(int k=0;k<10;k++)
{
if(arreglo[j]>arreglo[k])
{
x=arreglo[k];
arreglo[k]=arreglo[j];
arreglo[j]=x;
}
}
}
cout<<"\n";
for(int l=9;l>=0;l--)
{
cout<<arreglo[l]<<" ";
f[arreglo[l]]++;
for(int m=9; m>=0;m--)
{
if (f[m]>auxm)
{
auxm=f[m];
mod=m;
fg[c]=mod;
c++;
}
}
}
for(int b=9;b>=0;b--)
{
Prom=Prom+arreglo[b];
}
Prom=Prom/10;
cout<<"\n\20 Media: "<<Prom;
cout<<"\n\20 Mediana: "<<arreglo[5]<<" "<<arreglo[4];
cout<<"\n\20 Moda: "<<mod<<" ";
/*for (int a=9;a>=0;a--)
{
if(fg[a]==f[a])
{
cout<<fg[a]<<" ";
}
} */
getch();
}
mi pregunta es como puedo hacer la comparación de la s posiciones del arreglo para que en caso de que el programa arroje mas de una moda este imprima todas las modas y no solo una.