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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda! Letra mas repetida
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda! Letra mas repetida  (Leído 634 veces)
Estudiambre

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda! Letra mas repetida
« en: 18 Noviembre 2018, 23:59 pm »

Hola, me piden: Solicitar la introducción de una cadena, mostrar el número de veces que se repiten las letras (a, b, c y d) y mostrar cuál de ellas apareció mas veces en la cadena. Ya logre que me mostrara la cantidad de cada una de ellas pero no cual es la que se repite mas veces
Código:
#include<stdio.h>
#include<conio.h>
#include<string.h>
 
enum {a,b,c,d};
 
void contar(char frase[100],int letras[4]);
 
int main()
{
char frase[100];
int letras[4],i;
 
for(i=0;i<4;i++){
letras[i]=0;
}
 
printf("Escribe una frase: ");
gets(frase);
contar(frase,letras);
printf("\n Letra \t Se Repite");
printf("\n A \t %d",letras[a]);
printf("\n B \t %d",letras[b]);
printf("\n C \t %d",letras[c]);
printf("\n D \t %d",letras[d]);
getchar();
return 0;
}
void contar(char frase[100], int letras[4])
{
for(int i=0;frase[i] !='\0' && frase[i] !='\n';i++){
switch(frase[i]){
case 'a': case 'A': letras[a]++; break;
case 'b': case 'B': letras[b]++; break;
case 'c': case 'C': letras[c]++; break;
case 'd': case 'D': letras[d]++; break;

}
}
}


« Última modificación: 19 Noviembre 2018, 00:39 am por Estudiambre » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 902



Ver Perfil
Re: Ayuda! Letra mas repetida
« Respuesta #1 en: 19 Noviembre 2018, 00:26 am »

Tienes en el array <letras> el número de veces que aparece cada una. Simplemente compara esos valores y guarda el máximo. Por ejemplo:
Código
  1. int maximo = letras[0], indiceMaximo = 0;
  2. for (i = 1; i < 4; i++){
  3.    if(letras[i] > maximo){
  4.        maximo = letras[i];
  5.        indiceMaximo = i;
  6.    }
  7. }

Si quieres hacerlo usando la enum te dejo que investigues cómo podrías hacerlo.

PD: Para futuras consultas mete tu código entre etiquetas GeSHi ya que sino los índices con "[ ]" y una "i" o una "b" dentro desaparecen, puedes verlo tú mismo y el código es más complicado de entender. Y te recomiendo que sustituyas <gets(frase)> por <fgets(frase, 100, stdin)>.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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