Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/07/2014, 23:02
shikamarucb
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 2 meses
Puntos: 0
Exclamación Problema con printf en C

Hola a todos tengo el siguiente codigo:
Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. void menu();
  4. int db(char[]);
  5. int dh();
  6. int bd();
  7. int bh();
  8. int hd();
  9. int hb();
  10.  
  11. int main(){
  12. int num,opc;
  13. char numero[20];
  14.  
  15. printf("Digite el numero: ");
  16. scanf("%20s",&numero);
  17. menu();
  18. printf("\nEscoja una opcion de conversion: \n \n");
  19. scanf("%d",&opc);
  20.     switch(opc){
  21.         case 1: db(numero);break;
  22.         case 2: dh();break;
  23.         case 3: bd();break;
  24.         case 4: bh();break;
  25.         case 5: hd();break;
  26.         case 6: hb();break;
  27.         default: printf("No existe esta opcion.");
  28.     }
  29.  
  30.  
  31. }
  32.  
  33. void menu (){
  34.     printf("1- Decimal a Binario (db)\n");
  35.     printf("2- Decimal a Hexadecimal (dh)\n");
  36.     printf("3- Binario a Decimal (bd)\n");
  37.     printf("4- Binario a Hexadecimal (bh)\n");
  38.     printf("5- Hexadecimal a Decimal (hd)\n");
  39.     printf("6- Hexadecimal a Binario (hb)\n");
  40.  
  41. }
  42.  
  43. int db(char nume[20]){
  44.     char *asd;
  45.     asd=nume;
  46.     int pos,fin,res=0,calc=0,aa=1;
  47.  
  48.     for(int i=19; i>=0;i--){
  49.         if(asd[i]>=48 && asd[i]<=57){
  50.             pos=i;
  51.             break;
  52.         }
  53.     }
  54.  
  55.     for(int i=19; i>=0;i--){
  56.         if(asd[i]>=48 && asd[i]<=57){
  57.             fin=i;
  58.         }
  59.     }
  60.  
  61.     if(fin==0){
  62.         for(int i=pos;i>=0;i--){
  63.             calc=asd[i]-48;
  64.             //printf("%d\n",calc);
  65.             res=res+calc*aa;
  66.             aa=aa*10;
  67.         }
  68.     }else{printf("Numero no valido");return 0;}
  69.  
  70.     printf("\n%d\n\n",res);
  71.  
  72.     if(res>=0){
  73.         calc=res%2;
  74.         res=res/2;
  75.         asd[0]=calc+48;
  76.         int j=1;
  77.         //printf("%d",res);
  78.         while(res>=2){
  79.             //printf("%d",res);
  80.             calc=res%2;
  81.             res=res/2;
  82.             asd[j]=calc+48;
  83.             pos=j;
  84.             j++;
  85.  
  86.         }
  87.     }
  88.  
  89.     //printf("\n\n%d",pos);
  90.  
  91.  
  92.     return 0;
  93. }
  94.  
  95. int dh(){}
  96. int bd(){}
  97. int bh(){}
  98. int hd(){}
  99. int hb(){}

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.