Ver Mensaje Individual
  #11 (permalink)  
Antiguo 30/04/2010, 11:58
nestor1991ag
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
Respuesta: binario, decimal, octal, hexadecimal

Hola ya he avanzado bastante pero ahora tengo un problema y es que dice que el array esta corrupto, no lo he hecho como el codigo de binario que me has pasado sam90, pero muchas gracias de todas formas.

El codigo es el siguiente:
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. void adecimalb (char *n);
  7. void adecimalo (char *n);
  8. void adecimalh (char *n);
  9. void convertirb (char *n);
  10. void convertiro (char *o);
  11. void convertirh (char *h);
  12.  
  13. void main()
  14. {
  15.     char a[100]="\0";
  16.     char base, convertir;
  17.     char numero;
  18.     int i, fuera=0;
  19.  
  20.  
  21.     printf ("Dame un numero binario, octal, decimal o hexadecimal, parare cuando introduzcas '***'\n\n");
  22.  
  23.     for (i=0; i<=100; i++)
  24.     {
  25.         numero=getche();
  26.         a[i]=numero;
  27.  
  28.         if (numero!='*')
  29.         {
  30.             fuera=0;
  31.         }
  32.  
  33.         if (a[i]=='*')
  34.         {
  35.             fuera++;
  36.             a[i]='\0';
  37.         }
  38.  
  39.         if (fuera==3)
  40.         {
  41.             i=200;
  42.         }
  43.     }
  44.  
  45.     printf ("\n\nEn que base esta?\n\n");
  46.     scanf ("%c", &base);
  47.  
  48.     printf ("\n\nA que base la quieres convertir? (binario, octal, decimal o hexadecimal)\n\n");
  49.     numero=getche();
  50.     convertir=numero;
  51.     printf ("\n");
  52.  
  53.     if (base=='B')
  54.     {
  55.         adecimalb(a);
  56.     }
  57.  
  58.     if (base=='O')
  59.     {
  60.         adecimalo(a);
  61.     }
  62.  
  63.     if (base=='H')
  64.     {
  65.         adecimalh(a);
  66.     }
  67.  
  68.     if (convertir=='B')
  69.     {
  70.         convertirb(a);
  71.     }
  72.  
  73.     if (convertir=='O')
  74.     {
  75.         convertiro(a);
  76.     }
  77.  
  78.     if (convertir=='H')
  79.     {
  80.         convertirh(a);
  81.     }
  82.  
  83.     printf ("\nEl numero es:\n");
  84.  
  85.     puts (a);
  86.    
  87.     getch();
  88. }
  89.  
  90. void convertirb (char *n)
  91. {
  92.     int contador=0, pasa=0, j=0;
  93.  
  94.     int i=0, binario=0, numero;
  95.  
  96.     numero=atoi(n);
  97.  
  98.     for (i=0; i<=99; i++)
  99.     {
  100.         n[i]='\0';
  101.     }
  102.  
  103.     while (numero/2!=1)
  104.     {
  105.         if (numero<=2)
  106.         {
  107.             n[i]=1;
  108.             pasa=1;
  109.             contador++;
  110.             i++;
  111.         }
  112.  
  113.         if (pasa==0)
  114.         {  
  115.             numero=numero/2;
  116.             binario=binario+(numero%2);
  117.             n[i]=binario;
  118.             i++;
  119.             contador++;
  120.         }
  121.     }
  122.  
  123.     for (i=contador; i>=0; i--)
  124.     {
  125.         j++;
  126.         n[j]=n[contador];  
  127.     }
  128. }


El programa esta incompleto, ya que me duda solo reside en pasar de decimal a binario, ya que me dice que la variable esta corrupta, yo creo que el problema esta cuando devuelve el array pero no estoy seguro ni se como solucionarlo.