elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena  (Leído 6,832 veces)
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« en: 1 Marzo 2015, 21:40 pm »

Tengo esta funcion pero no me tira todos los caracteres repetidos
Código
  1. void ImpCaractRepetidos(){
  2.                         int contador=0;
  3.                         int aux=0;
  4.                         char c;
  5.                         for(int i=0; CadCar[i]!='\0';i++){
  6.                           for(int j=1; j<CadCar.length();j++){
  7.                              if(CadCar[i]==CadCar[j]){
  8.                                contador++;
  9.                              }        
  10.                           }
  11.                           if(contador > aux){
  12.                              aux = contador;
  13.                              c = CadCar[i];
  14.                              contador = 0;        
  15.                                       }
  16.                              else
  17.                                   contador = 0;
  18.  
  19.                         }
  20.                         std::cout<<"\nEn el texto hay "<<aux<<" caracteres repetidos\n";
  21.                         std::cout<<" y son "<<c;
  22.                       }
  23.  

Gracias por la ayuda


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #1 en: 1 Marzo 2015, 21:45 pm »

usa el namespace std para no andar escribirndo std:: antes de cada cout, cin,etc...

crea un array int con 26 posiciones (una por letra) y por cada letra sumas uno en la posición respectiva





En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #2 en: 1 Marzo 2015, 22:54 pm »

mira asi hice la funcion ahora pero no me imprime nada  :-[

Código
  1. void ImpCaractRepetidos(){
  2.                         int abecedario[26];
  3.                         int i,caracter;
  4.                         for( i=0; i<26; i++){
  5.                                 abecedario[i]=0;
  6.                                 }
  7.                         while (CadCar[i]!='\0'){
  8.                                 caracter = tolower(CadCar[i]);
  9.                                 if ( caracter >= 97 && caracter <= 122)
  10.                                   abecedario[caracter - 97]++;
  11.                                   }
  12.                           for ( i = 0; i < 26; i++ )
  13.                           {
  14.                           std::cout<<"La Letra "<< abecedario[i] <<"Aparecio"<< i+97<<"Veces\n";
  15.                           }
  16.                       }
  17.  
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #3 en: 1 Marzo 2015, 23:19 pm »

errores lógicos para llevar XD

Código
  1. while (CadCar[i]!='\0'){
  2.   caracter = tolower(CadCar[i]);
  3.   if ( caracter >= 97 && caracter <= 122)
  4.   abecedario[caracter - 97]++;
  5. }

i lo reiniciaste a 0? recuerda que while no lo hace... agradece que está por el for apuntando al \0 final, si no, el while fuera infinito, porque tampoco avanza (no tiene un i++)

Código
  1. std::cout<<"La Letra "<< abecedario[i] <<"Aparecio"<< i+97<<"Veces\n";

daría... "La Letra 0Aparaecio97Veces, corrigiendo espacios y corrigiendo la logica de la frase

Código
  1. std::cout<<"La Letra "<< (char)i+97 <<" Aparecio "<< abecedario[i] <<" Veces\n";

el "(char)" es un casting, que convierte el tipo, a ese, es decir "i+97" se convierte en char y se muestra como eso
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #4 en: 1 Marzo 2015, 23:55 pm »

bueno esta bien brother gracias por la sugerencias mira:

Código
  1. void ImpCaractRepetidos(){
  2.                         int abecedario[26];
  3.                         int i,caracter;
  4.                         for( i=0; i<26; i++){
  5.                                 abecedario[i]=0;
  6.                                 }
  7.                         while (CadCar[i]!='\0'){
  8.                                 i++;
  9.                                 caracter = tolower(CadCar[i]);
  10.                                 if ( caracter >= 97 && caracter <= 122)
  11.                                   abecedario[caracter - 97]++;
  12.                                   }
  13.                           for ( i = 0; i < 26; i++ )
  14.                           {
  15.                           std::cout<<"La Letra "<< ((char)i+97) <<" Aparecio "<< abecedario[i] <<" Veces\n";
  16.                           }
  17.                       }
  18.  

y aun me da error jejejej
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #5 en: 2 Marzo 2015, 00:21 am »

me cito...

errores lógicos para llevar XD

Código
  1. while (CadCar[i]!='\0'){
  2.   caracter = tolower(CadCar[i]);
  3.   if ( caracter >= 97 && caracter <= 122)
  4.   abecedario[caracter - 97]++;
  5. }

i lo reiniciaste a 0? recuerda que while no lo hace... agradece que está por el for apuntando al \0 final, si no, el while fuera infinito, porque tampoco avanza (no tiene un i++)



si tienes dudas has

Código
  1. int abecedario[26];
  2.                         cout << "i es:" << i << std::endl;
  3.                         for( i=0; i<26; i++){
  4.                                 abecedario[i]=0;
  5.                                 }
  6.                         cout << "i es:" << i << std::endl;
  7.                         while (CadCar[i]!='\0'){
  8.                                 i++;
  9.                                 caracter = tolower(CadCar[i]);
  10.                                 if ( caracter >= 97 && caracter <= 122)
  11.                                   abecedario[caracter - 97]++;
  12.                                   }
  13.                         cout << "i es:" << i << std::endl;
  14.                           for ( i = 0; i < 26; i++ )
  15.                           {
  16.                           std::cout<<"La Letra "<< ((char)i+97) <<" Aparecio "<< abecedario[i] <<" Veces\n";
  17.                           }
  18.                         cout << "i es:" << i << std::endl;
  19.                       }

y ve cuanto da i en cada caso
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #6 en: 2 Marzo 2015, 00:54 am »

Analisando tu codigo mira lo que logre....

Código
  1. for(int i = 0; i < CadCar.length(); i++) {
  2.                         for(int j = i+1; j < CadCar.length(); j++) {
  3.                          if(CadCar[j] == CadCar[i]) {
  4.                          std::cout << "La letra " << CadCar[i] << " está repetida" << std::endl;
  5.                          // quiero agragar un contador para cada palabraa  
  6.                               }
  7.                              }
  8.                             }
  9.                          }
  10.  

me dice las palabras repetidas pero no las veces que se repiten jajajajjaajajaj
En línea

MellaSystems

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #7 en: 2 Marzo 2015, 01:54 am »

alguien que me de una manito ya tengo el programa que imprime el numero de veces que se repite una letra. Solo me hace falta comparar cual es mayor y no me sale.

Código
  1. bool continuar = true;
  2.                         int contador=0,cont_letras=0;
  3.                         std::string c;
  4.                         for(int i=0; CadCar[i] !='\0';i++){
  5.                           for(int j=0; c[j] !='\0';j++){
  6.                              if(CadCar[i]==c[j]){
  7.                                continuar = false;
  8.                                break;
  9.                              }        
  10.                           }
  11.                           if(continuar = true){
  12.                             for (int k = 0; CadCar[k] != '\0'; k++){
  13.                                 if(CadCar[i]==CadCar[k]){
  14.                                   contador++;
  15.                                   }
  16.                                 }
  17.                                 std::cout << CadCar[i] << " se encuentra " << contador << " veces!" << std::endl;
  18.                                 contador=0;
  19.                             }
  20.                           c[cont_letras] = CadCar[i];
  21.                           cont_letras++;
  22.                           continuar = true;
  23.                           }
  24.                           }
  25.  
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena
« Respuesta #8 en: 2 Marzo 2015, 03:41 am »

no hagas doble post, usa el boton modificar...

crea un array con 2 posiciones, la primera para el numero de la letra y la otra para la comparación de tamaño... realmente ando medio dormido y no entiendo el desastre de codigo anidado que hiciste...

así que haces otro for que recorra la palabra y

Código
  1. if(cantidad > variable[1]({
  2.  variable[0]=letra;
  3.  variable[1]=cantidad;
  4. }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines