elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / compila y ejecuta bien, pero me muestra un caracter raro en: 6 Septiembre 2010, 01:53 am
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:
------------------------------------------------------------------------------------------------------
Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4.  
  5. ////////////////////////////////////////////////////
  6. //funcion para elevar potencias/////////////////////
  7. int potencia(int base, int exponente){
  8. int i,resultado;
  9. resultado=1;
  10. if (exponente > 0)
  11. for (i=0;i<exponente;i++){
  12. resultado=base*resultado;
  13. };
  14.  
  15. return resultado;
  16. }
  17.  
  18. ///////////////////////////////////////////////////////////////////
  19. ////////funcion para cambiar base binario a decimal////////////////
  20. void binario_atreintaidos(char *binario,char *treintaidos){
  21. int porte,i,j,cont,parcial,letras;
  22.  
  23.  
  24. porte=strlen(binario);
  25. i=porte-1;  //i almacena la cantidad de datos del binario
  26. letras=porte/5;
  27. for(j=0 ; porte>0 ; j++){
  28.  
  29.     cont=0;
  30.     parcial=0;
  31.     while(cont<5){
  32.  
  33.         if (binario[i]=='1')   // correspondiente potencia de 2 en caso de haber un 1
  34.             parcial= potencia(2,cont) + parcial;
  35.  
  36.         cont++;
  37. i--;  
  38. };     //endwhile
  39.     porte=i;
  40. cont=letras-j;
  41. cont--;
  42.  
  43.  
  44. switch (parcial){
  45. case 0: treintaidos[cont]='0';break;
  46. case 1: treintaidos[cont]='1'; break;
  47. case 2: treintaidos[cont]='2'; break;
  48. case 3: treintaidos[cont]='3'; break;
  49. case 4: treintaidos[cont]='4'; break;
  50. case 5: treintaidos[cont]='5'; break;
  51. case 6: treintaidos[cont]='6'; break;
  52. case 7: treintaidos[cont]='7'; break;
  53. case 8: treintaidos[cont]='8'; break;
  54. case 9: treintaidos[cont]='9'; break;
  55. case 10: treintaidos[cont]='a'; break;
  56. case 11: treintaidos[cont]='b'; break;
  57. case 12: treintaidos[cont]='c'; break;
  58. case 13: treintaidos[cont]='d'; break;
  59. case 14: treintaidos[cont]='e'; break;
  60. case 15: treintaidos[cont]='f'; break;
  61. case 16: treintaidos[cont]='g'; break;
  62. case 17: treintaidos[cont]='h'; break;
  63. case 18: treintaidos[cont]='i'; break;
  64. case 19: treintaidos[cont]='j'; break;
  65. case 20: treintaidos[cont]='k'; break;
  66. case 21: treintaidos[cont]='l'; break;
  67. case 22: treintaidos[cont]='m'; break;
  68. case 23: treintaidos[cont]='n'; break;
  69. case 24: treintaidos[cont]='o'; break;
  70. case 25: treintaidos[cont]='p'; break;
  71. case 26: treintaidos[cont]='q'; break;
  72. case 27: treintaidos[cont]='r'; break;
  73. case 28: treintaidos[cont]='s'; break;
  74. case 29: treintaidos[cont]='t'; break;
  75. case 30: treintaidos[cont]='u'; break;
  76. case 31: treintaidos[cont]='v'; break;
  77. case 32: treintaidos[cont]='w'; break;
  78. };//endswitch
  79.  
  80.  
  81. };  //endfor      
  82.  
  83. };   //endfuncion
  84. ///////////////////////////////////////////////////////////////
  85. ////////////////////////////////////////////////////////////////
  86.  
  87.  
  88.  
  89.  
  90. int main(){
  91. char cadena[50],treintaidos[50];
  92.  
  93. printf("ingrese numero binario \n");
  94. scanf("%s",cadena);
  95. printf("la conversion a base 10 es esta:\n");
  96. binario_atreintaidos(cadena,treintaidos);
  97. printf("%s \n",treintaidos);
  98.  
  99.  
  100.  
  101. return 0;
  102. }
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines