Autor
|
Tema: Ayuda... Necesito imprimir los caracteres que mas se repiten de una cadena (Leído 6,832 veces)
|
MellaSystems
Desconectado
Mensajes: 46
|
Tengo esta funcion pero no me tira todos los caracteres repetidos void ImpCaractRepetidos(){ int contador=0; int aux=0; char c; for(int i=0; CadCar[i]!='\0';i++){ for(int j=1; j<CadCar.length();j++){ if(CadCar[i]==CadCar[j]){ contador++; } } if(contador > aux){ aux = contador; c = CadCar[i]; contador = 0; } else contador = 0; } std::cout<<"\nEn el texto hay "<<aux<<" caracteres repetidos\n"; std::cout<<" y son "<<c; }
Gracias por la ayuda
|
|
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 46
|
mira asi hice la funcion ahora pero no me imprime nada void ImpCaractRepetidos(){ int abecedario[26]; int i,caracter; for( i=0; i<26; i++){ abecedario[i]=0; } while (CadCar[i]!='\0'){ caracter = tolower(CadCar[i]); if ( caracter >= 97 && caracter <= 122) abecedario[caracter - 97]++; } for ( i = 0; i < 26; i++ ) { std::cout<<"La Letra "<< abecedario[i] <<"Aparecio"<< i+97<<"Veces\n"; } }
|
|
|
En línea
|
|
|
|
engel lex
|
errores lógicos para llevar XD while (CadCar[i]!='\0'){ caracter = tolower(CadCar[i]); if ( caracter >= 97 && caracter <= 122) abecedario[caracter - 97]++; }
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++) 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 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
Mensajes: 46
|
bueno esta bien brother gracias por la sugerencias mira: void ImpCaractRepetidos(){ int abecedario[26]; int i,caracter; for( i=0; i<26; i++){ abecedario[i]=0; } while (CadCar[i]!='\0'){ i++; caracter = tolower(CadCar[i]); if ( caracter >= 97 && caracter <= 122) abecedario[caracter - 97]++; } for ( i = 0; i < 26; i++ ) { std::cout<<"La Letra "<< ((char)i+97) <<" Aparecio "<< abecedario[i] <<" Veces\n"; } }
y aun me da error jejejej
|
|
|
En línea
|
|
|
|
engel lex
|
me cito... errores lógicos para llevar XD while (CadCar[i]!='\0'){ caracter = tolower(CadCar[i]); if ( caracter >= 97 && caracter <= 122) abecedario[caracter - 97]++; }
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 int abecedario[26]; cout << "i es:" << i << std::endl; for( i=0; i<26; i++){ abecedario[i]=0; } cout << "i es:" << i << std::endl; while (CadCar[i]!='\0'){ i++; caracter = tolower(CadCar[i]); if ( caracter >= 97 && caracter <= 122) abecedario[caracter - 97]++; } cout << "i es:" << i << std::endl; for ( i = 0; i < 26; i++ ) { std::cout<<"La Letra "<< ((char)i+97) <<" Aparecio "<< abecedario[i] <<" Veces\n"; } cout << "i es:" << i << std::endl; }
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
Mensajes: 46
|
Analisando tu codigo mira lo que logre.... for(int i = 0; i < CadCar.length(); i++) { for(int j = i+1; j < CadCar.length(); j++) { if(CadCar[j] == CadCar[i]) { std::cout << "La letra " << CadCar[i] << " está repetida" << std::endl; // quiero agragar un contador para cada palabraa } } } }
me dice las palabras repetidas pero no las veces que se repiten jajajajjaajajaj
|
|
|
En línea
|
|
|
|
MellaSystems
Desconectado
Mensajes: 46
|
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. bool continuar = true; int contador=0,cont_letras=0; std::string c; for(int i=0; CadCar[i] !='\0';i++){ for(int j=0; c[j] !='\0';j++){ if(CadCar[i]==c[j]){ continuar = false; break; } } if(continuar = true){ for (int k = 0; CadCar[k] != '\0'; k++){ if(CadCar[i]==CadCar[k]){ contador++; } } std::cout << CadCar[i] << " se encuentra " << contador << " veces!" << std::endl; contador=0; } c[cont_letras] = CadCar[i]; cont_letras++; continuar = true; } }
|
|
|
En línea
|
|
|
|
engel lex
|
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 if(cantidad > variable[1]({ variable[0]=letra; variable[1]=cantidad; }
|
|
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda - Saber si se repiten caracteres en una misma cadena
Programación C/C++
|
Miky Gonzalez
|
2
|
22,999
|
4 Julio 2012, 14:07 pm
por Miky Gonzalez
|
|
|
Error al imprimir cadena de carácteres en C
« 1 2 »
Programación C/C++
|
darg94
|
14
|
14,652
|
21 Octubre 2012, 15:39 pm
por darg94
|
|
|
Ayuda!!! Problema con cadena de caracteres
Programación C/C++
|
mathias_vg
|
5
|
3,992
|
26 Junio 2013, 19:47 pm
por leosansan
|
|
|
Ayuda comparando cadena de caracteres!
Programación C/C++
|
Mr.Captcha
|
6
|
4,245
|
5 Septiembre 2013, 14:14 pm
por Eternal Idol
|
|
|
Ayuda en imprimir en un listbox las letras del abecedario que se repiten c#
.NET (C#, VB.NET, ASP)
|
Sempai15
|
3
|
3,556
|
4 Julio 2016, 03:54 am
por Eleкtro
|
|