Hola, casi termino el programa. Tengo que arreglar la salida, ya que por ejemplo:
225 B)16 = E1, pero mi programa devuelve @E1. Intenté con lo siguiente:
Pero:
225 B)13 = 144, el programa devuelve 44. Alguna recomendación?
Igualmente con números, al parecer de 3 cifras, el programa no devuelve los valores correctos, en bases mayores a 10.
Código c++:
Ver original#include <iostream>
#include <cmath>
#include <cstring>
int DivReit(int iNum,int iBase);
char* ConBase(int cNum,int cBase);
char CDig(int digtconv);
int main()
{
int iNuma,iBaseg;
std::cout<<"Ingrese numero"<<std::endl;
std::cin>>iNuma;
std::cout<<"Ingrese base a convertir"<<std::endl;
std::cin>>iBaseg;
if(iBaseg<10){std::cout<<"Numero convertido:"<<DivReit(iNuma,iBaseg)<<std::endl;}
else{std::cout<<"Numero convertido:"<<ConBase(iNuma,iBaseg)<<std::endl;}
return 0;
}
int DivReit(int iNum,int iBase)
{
int k=0;
int suma=0;
int dig;
while(iNum!=0)
{
dig=iNum%iBase;
iNum=iNum/iBase;
k++;
}
return suma;
}
char* ConBase(int cNum,int cBase)
{
char* mystr;
int pos=0;
char sNum[10];
int dig,n;
char cdig;
while(cNum!=0)
{
dig=cNum%cBase;
cdig=CDig(dig);//Convierto mi digito
sNum[pos]=cdig;
cNum=cNum/cBase;
pos++;
}
for(int i=0;i<n/2;i++)//Invierto mi numero
{
char aux;
aux=sNum[i];
sNum[i]=sNum[n-i-1];
sNum[n-i-1]=aux;
}
mystr=sNum;
return mystr;
}
char CDig(int digtconv)
{
char Mychars[]={'0','1','2','3','4','5','7','8','9','A','B','C','D','E','F'};
if(digtconv>9)
{
digtconv=Mychars[digtconv-1];
return digtconv;
}
else
{
digtconv=Mychars[digtconv];
return digtconv;
}
}