Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/07/2009, 08:55
Avatar de FTech
FTech
 
Fecha de Ingreso: julio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 0
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. }