Ver Mensaje Individual
  #23 (permalink)  
Antiguo 07/06/2014, 11:55
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 6 meses
Puntos: 49
Respuesta: Contar repeticiones de letra?

No creo que sea necesario el uso de un array, entendiendo que lo que buscas es sólo el mayor valor de n/N.

Una salida a lo que pretendes sería:

Cita:

a se repite 6
c se repite 2
d se repite 1
e se repite 1
m se repite 3
o se repite 5
p se repite 2
r se repite 5
s se repite 4
t se repite 1
u se repite 1
w se repite 2
z se repite 1

a da el mayor valor de ( n = 6 ) / ( N = 5 ) = 1.2
Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main (){
  7.   string diccionario[]={"casas","perros","computadoras","arroz","wwomam"};
  8.   int acum, acum_mayor, i, j, mayor, letra, tam = sizeof diccionario / sizeof diccionario[0];
  9.   float cont=0;
  10.   char letras[] = "abcdefghijklmnopqrstuvwxyz";
  11.   for( letra = 0 ; letras[letra] ; letra++){
  12.     for( i = 0 , acum = 0 ; i < tam ; i++)
  13.         for( j =0 ; diccionario[i][j] ; j++) /** Ó: for(j =0;j<diccionario[i].size();j++) **/
  14.             if( diccionario[i][j] == letras[letra] )
  15.               acum++;
  16.     if( acum != 0 ){
  17.       cout << letras[letra] << " se repite " << acum << endl;
  18.       if ( acum / tam > cont ){
  19.         cont = (float) acum/tam;
  20.         mayor = letra;
  21.         acum_mayor = acum ;
  22.       }
  23.     }
  24.   }
  25.   cout << endl<< letras[mayor] << " da el mayor valor de ( n = "  << acum_mayor << " ) / (  N = " << tam << " ) = "<< cont << endl;
  26.   return 0;
  27. }

Con el valor calculado ya le puedes aplicar la fórmula que quieras.

¡¡¡Saluditos!!!