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
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
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";
}
}
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
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
me cito...
Cita de: engel lex en 1 Marzo 2015, 23:19 PM
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
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
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;
}
}
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;
}