Ayuda ordenar cantidad de caracteres de cada letra en C

Iniciado por Blast06, 5 Agosto 2015, 13:44 PM

0 Miembros y 1 Visitante están viendo este tema.

Blast06

Saludos.


estoy atascado en la parte de ordenar, logré ordenar la cantidad de caracteres pero los caracteres que se imprimen son de otro mundo xD. Miren:

int main()
{
char texto[128], caracteres[256] = {0};
int i, h, mayor, elmayor;

printf("Ingrese una frase o texto: ");
gets(texto);

for(i = 0; texto[i] != '\0'; i++){
caracteres[(int)texto[i]]++;}

//Para letras
for(i = 0; i < 128; i++){
for(h=i+1; h < 128; h++){
if(texto[i]>= texto[h]){
elmayor= texto[i];
texto[i]=texto[h];
texto[h]=elmayor;}
}
}



//para numeros
for(i = 0; i<256; i++){
for(h =i+1; h <256; h++){
if(caracteres[i]>= caracteres[h]){
mayor= caracteres[i];
caracteres[i]=caracteres[h];
caracteres[h]=mayor;}
}
}






for(i = 0; i < 256; i++){
if(caracteres[i] > 0){

printf("\n%c = %d", i, caracteres[i]);}}

getchar();
getchar();
return 0;
}


alguien sabe como podria solucionarlo y que quiere ayudarme con esa parte? gracias.

A.I.

Cita de: Blast06 en  5 Agosto 2015, 13:44 PM

for(i = 0; i < 128; i++){
for(h=i+1; h < 128; h++){
if(texto>= texto[h]){
elmayor= texto;
texto=texto[h];
texto[h]=elmayor;}
}
}


Por favor, indenta el código. Y usa la etiqueta GeSHI del lenguaje que estás usando.

El problema es que haces los bucles mientras i y h son menores que 128, pero tu texto no tiene por que tener ese numero de caracteres y coge basura de posiciones de memoria no inicializadas, tienes que hacerlo hasta la longitud de la cadena. Prueba a usar una librería para manejo de cadenas.