Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/07/2014, 02:27
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 5 meses
Puntos: 49
Respuesta: Problema con printf en C

Cita:
Iniciado por shikamarucb Ver Mensaje
.............................
El problema es que en la linea 77 tengo un printf entre comentarios, imprimiendo la variable res igual que en la linea 70, el problema es que cuando quito los comentarios en la linea 77, me imprime unos numeros raros tanto en la linea 70 como en la linea 77; pero si dejo la linea 77 en comentarios me imprime el numero correctamente, que es el que uno digita por pantalla.
Eso es porque al no usar '\n' en los printf salen los valores de "res" uno a continuación de otro.

De todas formas veo un poco caótico el método para pasar a binario. Sin modificarte lo mucho, poco más que los nombres de las variables:

Código C++:
Ver original
  1. int db ( char numDecimal [ 20 ] ) {
  2.  
  3.     int i , lon , factor = 1 , num = 0 , num0 ;
  4.  
  5.   /*------> Calculo tamaño real de "numDecimal" <------*/
  6.  
  7.     for ( lon = 0 ; numDecimal[ lon ] ; lon++ ) ;
  8.  
  9.   /*-------> Paso "numDecimal"  a int en "num "<-------*/
  10.  
  11.     for( i = lon - 1 ; i >= 0 ; i-- , factor *= 10 ) {
  12.       if( numDecimal[ i ] < 48 || numDecimal[ i ] > 57 ) {
  13.         puts( "Numero no valido" ) ;
  14.         return 0 ;
  15.       }
  16.       num += ( numDecimal [ i ] - 48 ) * factor ;
  17.     }
  18.     num0 = num ;
  19.  
  20.   /*--> Calculo tamaño real de "numBinario" = num en binario <--*/
  21.  
  22.     for ( lon = 0 ; num0 >= 1 ; lon++ , num0 /= 2 ) ;
  23.     char numBinario [ lon ] ;
  24.  
  25.   /*-------> Paso "num"  a binario en "numBinario "<-------*/
  26.  
  27.     for( i = lon - 1  ; num ;  i-- , num /= 2 )
  28.       numBinario [ i ] = ( num % 2) + 48 ;
  29.      
  30.     numBinario [ lon ] = '\0' ;
  31.    
  32.     printf("\n\n%s\n\n",numBinario);
  33.     return 0;
  34. }

¡¡¡Saluditos!!!