[ Foro de C ]
Saludos.
Tengo un problema, estoy haciendo un algoritmo para contar la cantidad de veces que se repite cada caracter en una frase introducida por teclado, y a parte de eso, ordenar los caracteres de mayor a menor, en esto ultimo es que tengo problemas, miren:
#include <stdio.h>
#include <string.h>
void contar(char frase[], char abecedario[],int i);
int main ()
{
char abecedario[26] = "abcdefghijklmnopqrstuvwxyz", frase[30];
int i, caracteres;
printf("introduce frase\n");
fgets(frase, 30, stdin);
caracteres = strlen(frase);
for (i = 0; i < 25; i++)
contar(frase, abecedario, i);
return 0;
}
void contar(char frase[], char abecedario[], int i)
{
int j, num,contador,mayor,l=99, aux;
char letra;
contador = 0;
num = strlen(frase);
for (j = 0; j < num-1; j++)
{
if (frase[j] == abecedario[i])
{
contador+=1;
letra = abecedario[i];
// aquí es donde tiene que estar el problema
if (frase[j]> abecedario[i])
aux= frase[j];
frase[j]= abecedario[i];
abecedario[i]= aux;
}
}
if (contador != 0)
printf("el numero de letras %c es %d\n", letra, contador);
}
Ese "if" parece que pretenda hacer 3 cosas distintas... pero no tiene llaves, por lo que sólo la primera de esas tres órdenes se realizará cuando se cumpla la condición.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)