Contar letras de una cadena en C

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)

1 respuesta

Respuesta
1
No lo he probado pero creo que te funcionara:
#include <ctype.h>
#include <stdio.h>
#include <conio.h>
int main()
{
  //para la cadena
  char string [256];
  printf ("cadena: ");
  //leer cadena
  gets (string);
  //display cadena
  printf ("Your string is: %s\n",string);
  //un sitio para cada letra del alfabeto
  int frecuencia[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};
  //posicion = 0
  int pos = 0;
  while (string[pos] != NULL)
  {
    frecuencia[tolower(string[pos])-'a']++;
    pos++;
  }
  //Poner el resultado en pantalla
  for (int i = 0; i < 26; i++)
printf("la letra '%c' aparece %d veces", (char)('a'+ pos), frecuencia[pos]);
  return 0;
}
Hola Experto: gracias por contestar tan rapido mi pregunta, es de destacar tu disponibilidad y te comento que tampoco suma cada letra, pero el código que me enviaste me puede ayudar a encontrar la solución. Desde ya muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas