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:
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. #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(); }