Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   Dev c++ (de decimal a binario,octal y hexadecimal) (http://www.forosdelweb.com/f14/dev-c-decimal-binario-octal-hexadecimal-714260/)

darwin2201 29/06/2009 18:37

Dev c++ (de decimal a binario,octal y hexadecimal)
 
Hola necesito saber como puedo hacer un programa que relaize estas transformaciones, he intentado hacerlo con algunas secuenciasde escape pero no he encontrado para binario, y la de octal siempre imprime 0...me parece que la unica que sirve es la hexadecimal pero no estoy seguro

FTech 04/07/2009 15:00

Respuesta: Dev c++ (de decimal a binario,octal y hexadecimal)
 
Si tu objetivo es pasar de decimal a los otros 3 sistemas, te recomiendo que utilices el método de divisón reiterada para comenzar.

Mira este algoritmo convierte cualquier numero entero en base 10, a cualquier base entre 1 y 10.

Código Cpp::
Ver original
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     int dig;
  8.     int iNum,iBase;
  9.     cin>>iNum;
  10.     cin>>iBase;
  11.     double k=0;
  12.     int iNumR=iNum;
  13.     int iNN=0;
  14.     while(iNumR!=0)
  15.     {
  16.         dig=iNumR&#37;iBase;
  17.         iNN=iNN+dig*pow(10,k);
  18.         iNumR=iNumR/iBase;
  19.         k++;
  20.     }
  21.     cout<<"Numero:"<<iNum<<" convertido:"<<iNN<<" en base:"<<iBase;
  22.     system("pause");
  23.     return 0;
  24. }

FTech 06/07/2009 08:55

Respuesta: Dev c++ (de decimal a binario,octal y hexadecimal)
 
He estado trabajando en el problema. Aqui tengo un pequeño avance. Falta mejorar el tema de la salida con bases mayores a 10.

Código c++:
Ver original
  1. #include <iostream>
  2. #include <cmath>
  3. #include <cstring>
  4.  
  5. int DivReit(int iNum,int iBase);
  6. char* ConBase(int cNum,int cBase);
  7. char CDig(int digtconv);
  8.  
  9.  
  10. int main()
  11. {
  12.     int iNuma,iBaseg;
  13.     std::cout<<"Ingrese numero"<<std::endl;
  14.     std::cin>>iNuma;
  15.     std::cout<<"Ingrese base a convertir"<<std::endl;
  16.     std::cin>>iBaseg;
  17.     if(iBaseg<10){std::cout<<"Numero convertido:"<<DivReit(iNuma,iBaseg)<<std::endl;}
  18.     else{std::cout<<"Numero convertido:"<<ConBase(iNuma,iBaseg)<<std::endl;}
  19.     system("pause");
  20.     return 0;
  21. }
  22.  
  23. int DivReit(int iNum,int iBase)
  24. {
  25.     int k=0;
  26.     int suma=0;
  27.     int dig;
  28.     while(iNum!=0)
  29.     {
  30.         dig=iNum&#37;iBase;
  31.         suma=suma+dig*pow(10,k);
  32.         iNum=iNum/iBase;
  33.         k++;
  34.     }
  35.     return suma;
  36. }
  37.  
  38. char* ConBase(int cNum,int cBase)
  39. {
  40.     char* mystr;
  41.     int pos=0;
  42.     char sNum[10];
  43.     int dig,n;
  44.     char cdig;
  45.     while(cNum!=0)
  46.     {
  47.         dig=cNum%cBase;
  48.         cdig=CDig(dig);//Convierto mi digito
  49.         sNum[pos]=cdig;
  50.         cNum=cNum/cBase;
  51.         pos++;
  52.     }
  53.     n=strlen(sNum);
  54.     for(int i=0;i<n/2;i++)//Invierto mi numero
  55.     {
  56.         char aux;
  57.         aux=sNum[i];
  58.         sNum[i]=sNum[n-i-1];
  59.         sNum[n-i-1]=aux;
  60.     }
  61.     mystr=sNum;
  62.     return ++mystr;
  63. }
  64.  
  65. char CDig(int digtconv)
  66. {
  67.     char Mychars[]={'0','1','2','3','4','5','7','8','9','A','B','C','D','E','F'};
  68.     if(digtconv>9)
  69.     {
  70.         digtconv=Mychars[digtconv-1];
  71.         return digtconv;
  72.     }
  73.     else
  74.     {
  75.         digtconv=Mychars[digtconv];
  76.         return digtconv;
  77.     }
  78. }

darwin2201 06/07/2009 19:05

Respuesta: Dev c++ (de decimal a binario,octal y hexadecimal)
 
gracia primero que nada pero...
esto esta en borlan , TC....no se se puede pasar a dev c??

yo lo intentare pero dime si se puede...

y te repito...
muchas gracias por las molestias..

FTech 06/07/2009 19:29

Respuesta: Dev c++ (de decimal a binario,octal y hexadecimal)
 
Hola darwin, cualquier código mientras c++ se puede pasar a cualquier compilador. Si quieres utilizar dev c++, no creo que tengas problemas, unicamente creo que tienes que cambiar cstring por string.h y cmath por math.h.

No lo compilé en borland.

De nada... A mi también me sirve para practicar.


La zona horaria es GMT -6. Ahora son las 21:40.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.