Mostrar caracter que aparece más veces en un mensaje
Presentación
Enlace a Codepad
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pseudocódigo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
INICIO
char mensaje [1000], letra_max
int contadores [256], contador_max = 0, i
//Se inicializan todos los valores de la tabla de contadores a cero
PARA i=0; i < 256; i++
contadores [i] = 0
FIN PARA
MOSTRAR Introduce el texto
LEER mensaje
//Se recorre todo el mensaje, incrementando la posición de la tabla contadores correspondiente al valor del código //ascci del caracter leido
PARA i=0; i < strlen(mensaje); i++
contadores [ mensaje [i] ] ++
FIN PARA
//Se recorre la tabla de contadores para buscar el número mayor
PARA i=0; i < 256; i++
SI contador [i] > contador_max
contador_max = contador [i]
FIN SI
FIN PARA
//Se vuelve a recorrer la tabla de contadores buscando los valores que son iguales al máximo (por si hay más de uno) y mostrar un mensaje //para cada vez que se encuentre, mostrando el valor del contador como caracter
PARA i=0; i < 256; i++
SI contador [i] == contador_max
letra_max = i
MOSTRAR La letra máxima es letra_max y aparece contador_max veces
FIN SI
FIN PARA
FIN
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
codigo fuente
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include <stdio.h>
#include <stdlib.h>
int main()
{
char texto_teclado [100];
int contador_letras [256];
int i, mayor, codigo;
//se inicializa texto_teclado a un valor
strcpy (texto_teclado, "en un lugar de galicia de cuyo nombre no quiero acordarme");
for (i=0;i<256;i++) contador_letras[i]=0;
printf("Introduce un texto por teclado: ");
gets(texto_teclado);
for (i=0;i<strlen(texto_teclado);i++)
{
if (texto_teclado[i] != ' ') contador_letras [texto_teclado[i]]++;
}
mayor = contador_letras[0];
for (i=0;i<255;i++)
{
if (contador_letras[i]>mayor)
{
mayor = contador_letras[i];
codigo = i;
}
}
printf("La letra que mas aparece es %c y aparece %d veces.", codigo, mayor);
return 0;
}
No hay comentarios:
Publicar un comentario