Haber que sugerencias me dan para este codigo

julio
27 de Mayo del 2010
Hola, ps lo que tengo que hacer es un prog que calcule el promedio y la moda de cierta cantidad de alumnos, lo del promedio ya me quedo, pero la moda no la consigo (la moda es el numero que se repite mas veces). mi codigo es:
#include
#include
int nA,i,j,cal[12],mayor,frecuencia[12];
float prom,proms;
main(){
printf("Cuantos alumnos vas a introducir???");
scanf("%d",&nA);
for(i=1;i<=nA;i++)
{
printf("damle la calif: ");
scanf("%d",&cal[i]);
prom=(prom+cal[i]);
}
frecuencia[j]=cal[i];
for (j=0;j<=10;j++)
{
if (frecuencia[j]> mayor)
mayor=frecuencia[i];
}
for (j=0;j<=10;j++)
{
if (mayor==frecuencia[j])
printf ("nLa moda es: %dn",j);
}

proms=prom/nA;
printf("el promedio es %.2fn ",proms);
getch();
}

la verdad no pillo como hacer para que me de la moda. Alguna sugerencia???
gracias y saludos!!!

Backmble
27 de Mayo del 2010
Hola, para la moda yo lo que haría sería:
con la tabla cal irla repasando con un for y dentro introduces otro for que repase de nuevo la tabla cal con el valor del cal[variableprimerfor] y cada vez que se cumpla la condicion sumar 1. Para esto tienes que tener un contador, una variable para guardar el máximo y una variable para guardar que numero es la moda.
Quedaria algo así.

int i=0;
int j=0;
int contador=0;
int máx=0;
int moda=0;
for(i=0;i {
contador=0;
for(j=0;i {
if(cal[i]==cal[j])
{
contador++;
}
}
if(contador>max)
{
max=contador;
moda=cal[i];
}
)
}

Tendrás que controlar más cosas.
Y si quieres guardar todas las modas en el caso de que sean varias tendras que hacerlas con una tabla.
Espero que te sirva