Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - pedroarcego

#1
Hola. tengo el codigo hecho para pasar una cadena binaria a una de base 32. El funcionamiento está bien. sin embargo, al entregarle el dato de entrada, me da el ultimo dato de salida con un caracter "feo", que  corresponde a la "ultima posicion" de un arreglo que sale de una función. Que puede estar mal? o cuando pasa esto???? gracias por cualquier ayuda!!!

dato de entrada:
10001110001010101010


dato de salida debería ser:
hola

PERO el dato de salida que me da es este:
hola

EL CODIGO LO INSERTO ACA ABAJO:
------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>


////////////////////////////////////////////////////
//funcion para elevar potencias/////////////////////
int potencia(int base, int exponente){
int i,resultado;
resultado=1;
if (exponente > 0)
for (i=0;i<exponente;i++){
resultado=base*resultado;
};

return resultado;
}

///////////////////////////////////////////////////////////////////
////////funcion para cambiar base binario a decimal////////////////
void binario_atreintaidos(char *binario,char *treintaidos){
int porte,i,j,cont,parcial,letras;


porte=strlen(binario);
i=porte-1;  //i almacena la cantidad de datos del binario
letras=porte/5;
for(j=0 ; porte>0 ; j++){
 
    cont=0;
    parcial=0;
    while(cont<5){
               
        if (binario[i]=='1')   // correspondiente potencia de 2 en caso de haber un 1
            parcial= potencia(2,cont) + parcial;
                           
        cont++;
i--;  
};     //endwhile
    porte=i;
cont=letras-j;
cont--;

   
switch (parcial){
case 0: treintaidos[cont]='0';break;
case 1: treintaidos[cont]='1'; break;
case 2: treintaidos[cont]='2'; break;
case 3: treintaidos[cont]='3'; break;
case 4: treintaidos[cont]='4'; break;
case 5: treintaidos[cont]='5'; break;
case 6: treintaidos[cont]='6'; break;
case 7: treintaidos[cont]='7'; break;
case 8: treintaidos[cont]='8'; break;
case 9: treintaidos[cont]='9'; break;
case 10: treintaidos[cont]='a'; break;
case 11: treintaidos[cont]='b'; break;
case 12: treintaidos[cont]='c'; break;
case 13: treintaidos[cont]='d'; break;
case 14: treintaidos[cont]='e'; break;
case 15: treintaidos[cont]='f'; break;
case 16: treintaidos[cont]='g'; break;
case 17: treintaidos[cont]='h'; break;
case 18: treintaidos[cont]='i'; break;
case 19: treintaidos[cont]='j'; break;
case 20: treintaidos[cont]='k'; break;
case 21: treintaidos[cont]='l'; break;
case 22: treintaidos[cont]='m'; break;
case 23: treintaidos[cont]='n'; break;
case 24: treintaidos[cont]='o'; break;
case 25: treintaidos[cont]='p'; break;
case 26: treintaidos[cont]='q'; break;
case 27: treintaidos[cont]='r'; break;
case 28: treintaidos[cont]='s'; break;
case 29: treintaidos[cont]='t'; break;
case 30: treintaidos[cont]='u'; break;
case 31: treintaidos[cont]='v'; break;
case 32: treintaidos[cont]='w'; break;
};//endswitch


};  //endfor      

};   //endfuncion
///////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////




int main(){
char cadena[50],treintaidos[50];

printf("ingrese numero binario \n");
scanf("%s",cadena);
printf("la conversion a base 10 es esta:\n");
binario_atreintaidos(cadena,treintaidos);
printf("%s \n",treintaidos);



return 0;
}