Contar letras de una cadena en C

Hola Experto:
Me podrías ayudar con el siguiente código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Sin funciones de libreria */
int main() {
    int cont=0,i;
    short frecuencias[26];
    char cadena[100];
    printf("\nIngrese la cadena: ");
    gets(cadena);    
    i = 0;
    while (cadena[cont++] != '\0') ;    
    printf("\n%d caracteres ",cont);
    for(cont = 0; cadena[cont] != '\0' && cadena[cont] != ' '; cont++){
        if (((cadena[cont] >='A') && (cadena[cont] < 'Z')) ||
            ((cadena[cont] >='a') && (cadena[cont] < 'z')))            
            frecuencias[cadena[cont]-65]++;
    }
    for(i=65; i <= 90; i++)
        printf("\nLetra %c: %d",i,frecuencias);
    printf("\n");
    system("\npause");
    return 0;
}
Tengo que contar las ocurrencias de cada letra del alfabeto y mostrarlas, pero al guardalas en un arreglo, el código que he colocado no funciona. Me puedes dar la solución a este problema. Mi dirección de email es (xxxxxx)
Desde ya muchas gracias por tu atención.
Saludos.
Respuesta
1
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <ctype.h>
int main() { 
    int cont=0; 
    short frecuencias[26] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
    char cadena[100]; 
    printf("\nIngrese la cadena: "); 
    gets(cadena);     
    while (cadena[cont] != NULL) {
    frecuencias[tolower(cadena[cont])-'a']++; 
cont++;
    } 
    for(int i=0; i < 26; i++) 
        printf("Letra %c: %d\n",i+'a',frecuencias); 
return 0; 
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas