C/Visual C - valor moda

 
Vista:

valor moda

Publicado por eduardo (82 intervenciones) el 14/09/2007 22:50:15
Tengo una funcion moda que recibe como parametros:
* un arreglo de frecuencias de 10 elementos iniciados a cero
* un arreglo de respuestas(resp) enteras(con rangos de 1 a 9) de una encuesta
* y el numero de personas encuestadas(tamanio del arreglo resp)

void moda( int frec[], const int resp[], int TAMANIO ) {
int rango; /* contador para acceder a los elementos del 1 al 9 del arreglo frec */
int j; /* contador para sumar los elementos de 0 98 del arreglo respuesta */
int h; /* contador para desplegar histogramas de los elementos en el arreglo frec */

int empate;

int masGrande = 0; /* representa la frecuencia mas grande */
int valorModa = 0; /* representa la respuesta mas frecuente */

printf( "\n%s\n%s\n%s\n", "********", " Moda", "********" );

for ( rango = 1; rango <= 9; rango++ ) {
frec[ rango ] = 0;
}

for ( j = 0; j < TAMANIO; j++ ) {
++frec[ resp[ j ] ];
}

printf( "%s%15s%15s\n\n\n\n",
"Respuesta", "Frecuencia", "Histograma" );
for ( rango = 1; rango <= 9; rango++ ) {
printf( "%9d%11d ", rango, frec [ rango ] );
if ( frec[ rango ] > masGrande ) {
masGrande = frec[ rango ];
valorModa = rango;
empate = 0;
}
else if ( masGrande == frec[ rango ] ) {
empate++;
}
for ( h = 1; h <= frec[ rango ]; h++ ) {
printf( "*" );
}
printf( "\n" );
}
if ( empate != 0 ) {
printf( "%d elementos empataron\n\n",empate + 1 );
}

printf( "La moda es el valor mas frecuente.\n"
"Para esta ejecucion la moda es %d el cual ocurrio"
" %d veces.\n", valorModa, masGrande );

}

He implementado la moda en caso que ocurra un empate y me arroja cuantos elementos empataron
pero lo que no he logrado es capturar aquellos elementos que empataron
por ej:

si frec[ 5 ] = 10 ocurrencias
frec[ 10 ] = 10 y tambien
frec[ 51 ] = 10

muestre no solo la primera ocurrencia masGrande sino todas aquellas que son iguales

Espero me ayuden a resolver el problemilla
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