Si pretendes ordenar el resultado en función del número de apariciones... primero tienes que calcular el número de apariciones de cada caracter...
Para eso necesitas un array de tipo int de 256 posiciones... conveniente inicializado a 0. Entonces iteras sobre la cadena y, para cada caracter, incrementas el valor que le corresponda a cada caracter:
Código C:
Ver originalint apariciones[256]; // hay que inicializarlo
char* puntero;
for( puntero = texto; *puntero; ++puntero )
apariciones[ *puntero ]++;
Si prefieres usar otro algoritmo para recorrer la cadena eres libre de modificar el código.
Bueno, al lío. Una vez tienes calculadas el total de apariciones tienes que presentar los resultados ordenados. Si intentas ordenar esos números tal cual tendrás un problema y es que una vez ordenados no tendrás forma de saber a qué caracter se corresponde cada resultado.
En este punto deberías plantearte guardar los datos de forma diferente... quizás en una estructura para poder mantener el par caracter-apariciones. Algo del estilo:
Código C:
Ver originalstruct pareja
{
char caracter;
int apariciones;
};
Entonces podrías crear un array estático y ordenarlo a conveniencia:
Para ordenar los elementos no olvides usar una variable temporal:
Código C:
Ver originalstruct pareja temporal = elementos[3];
elementos[3] = elementos[5];
elementos[5] = temporal;
Otra opción es hacer uso de una lista enlazada. Para no modificar la estructura puedes anidarlas:
Código C:
Ver originalstruct Nodo
{
struct Nodo* siguiente;
struct pareja datos;
};
Entonces, haciendo uso de malloc (o calloc, como prefieras) para reservar memoria y de free para liberarla posteriormente puedes ir componiendo la lista de elementos.
Y poco más que contar, lo primero que tienes que hacer es decantarte por una forma en concreto, después pegarte con esa solución y luego pasarte por aquí si tienes nuevas dudas.
Ah si, por favor te lo pido... antes de enviar un mensaje al foro invierte un par de minutos en leerlo y corregir las faltas de ortografia y demás errores gramaticales. Además, si apañas el texto para que tenga sentido mejor que mejor.
Un saludo.