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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  compila y ejecuta bien, pero me muestra un caracter raro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: compila y ejecuta bien, pero me muestra un caracter raro  (Leído 4,274 veces)
pedroarcego

Desconectado Desconectado

Mensajes: 1


Ver Perfil
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. }


« Última modificación: 6 Septiembre 2010, 10:17 am por Littlehorse » En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: COMPILA Y SE EJECUTA BIEN, PERO PORQUE MUESTRA ESE CARACTER RARO?
« Respuesta #1 en: 6 Septiembre 2010, 10:04 am »

Asegúrate que la cadena treintaidos este terminada en null antes de imprimirla.


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
clodan

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: compila y ejecuta bien, pero me muestra un caracter raro
« Respuesta #2 en: 6 Septiembre 2010, 15:39 pm »

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!!!

La verdad qe no tengo ni idea por que es, pero en la libreria math.h hay una funcion qe se llama sqrt(); que te eleva al cuadrado un numero, fijate qe tiene bastantes funciones, es para qe no te estes matando haciendolo asi :P

salu2!
« Última modificación: 6 Septiembre 2010, 15:47 pm por Littlehorse » En línea

darkraider

Desconectado Desconectado

Mensajes: 231



Ver Perfil
Re: compila y ejecuta bien, pero me muestra un caracter raro
« Respuesta #3 en: 6 Septiembre 2010, 15:51 pm »

sqrt() es raíz cuadrada (SQuare RooT) compañero...
En línea

Curioso de mi...
clodan

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: compila y ejecuta bien, pero me muestra un caracter raro
« Respuesta #4 en: 6 Septiembre 2010, 16:10 pm »

sqrt() es raíz cuadrada (SQuare RooT) compañero...

jajajaja qe tontoo soyy!!! tenes razon!!! jajajaja te acordas cual es la de elevacion?
En línea

Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: compila y ejecuta bien, pero me muestra un caracter raro
« Respuesta #5 en: 6 Septiembre 2010, 18:31 pm »

sqrt() es raíz cuadrada (SQuare RooT) compañero...

jajajaja qe tontoo soyy!!! tenes razon!!! jajajaja te acordas cual es la de elevacion?

http://www.cplusplus.com/reference/clibrary/cmath/pow/

 ;)
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: compila y ejecuta bien, pero me muestra un caracter raro
« Respuesta #6 en: 6 Septiembre 2010, 18:32 pm »

sqrt() es raíz cuadrada (SQuare RooT) compañero...

jajajaja qe tontoo soyy!!! tenes razon!!! jajajaja te acordas cual es la de elevacion?
por lógica es pow()

Saludos
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: compila y ejecuta bien, pero me muestra un caracter raro
« Respuesta #7 en: 7 Septiembre 2010, 11:28 am »

A mi me parece que el signo raro es traducido del \n del salto de linea.... tal vez sea eso...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines