Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Blast06 en 5 Agosto 2015, 13:44 pm



Título: Ayuda ordenar cantidad de caracteres de cada letra en C
Publicado por: Blast06 en 5 Agosto 2015, 13:44 pm
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:

Código:
 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.


Título: Re: Ayuda ordenar cantidad de caracteres de cada letra en C
Publicado por: A.I. en 5 Agosto 2015, 14:07 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.