2006 - Most wanted word

Analisis
Problema donde se debe buscar la palabra que se repita mas, entonces solo se debe guardar en una tabla las cadenas leídas y procesarlas una vez estas son leídas para ver la que mas se repite guardando la cantidad y el indice de la palabra que mas se repita.

Se debe tener cuidado con la lectura, ya que en ele enunciado dice "solo palabras validas" con ciertos requisitos, por eso conviene leer caracter a caracter y con punteros clásicos para que cuando se encuentra un caracter que no sea letra, se tome como palabra y se procese.

Entre comentarios esta la función mostrarTabla que se puede usar para entender el comportamiento de la tabla.

Solucion
//Por Ariel const int MAX=2000; char tabla[MAX][36]; int cantidad[MAX]; int Mayor,MayorI; int iterador=0; void resetArrays{ for(int i=0;i<MAX;i++) cantidad[i]=0; Mayor=-5;MayorI=-5; } void aMinuscula(char &c){ if ('A'<=c&&c<='Z') c+=32; } bool esValido(char c){ if ('a'<=c&&c<='z') return true; else return false; } void procesarCadena(char *cadena){ int j=0; //printf("Cadena: %s (%d)\n",cadena,strlen(cadena)); if(iterador==0){ strcpy(tabla[iterador],cadena); cantidad[iterador]=1; iterador++; j=0; }    else{ j=0; while(strcmp(cadena,tabla[j])!=0&&jMayor){ Mayor=cantidad[j]; MayorI=j; } } /*void mostrarTabla{ printf("\n-Tabla-\n"); for(int i=0;i<iterador;i++) printf("%s : %d\n",tabla[i],cantidad[i]); printf("Mayor: %d %d \n\n",Mayor,MayorI); }*/ int main{ char cadena[36],*ptcadena,carleido; int cadProcesadas=0; while(true){ cadProcesadas=0; iterador=0; ptcadena=cadena; resetArrays; while(true){ carleido=getchar; aMinuscula(carleido); if(esValido(carleido)) *(ptcadena++)=carleido; else{ *ptcadena=0; if (strlen(cadena)!=0) { //printf("Cadena: %s (%d)\n",cadena,strlen(cadena)); procesarCadena(cadena); cadProcesadas++; ptcadena=cadena; }            }             if (carleido=='#') break; }        //mostrarTabla; if(cadProcesadas==0) break; printf("%4d %s\n",Mayor,tabla[MayorI]); }    return 0; }
 * 1) include
 * 1) include