C/Visual C - Cambio de base 2 a 10

 
Vista:

Cambio de base 2 a 10

Publicado por Jorge (1 intervención) el 30/04/2006 14:34:04
Necesito realizar un programa que pase de base 2 a base 10 un numero, sin tener en cuenta los decimales, me podeis ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambio de base 2 a 10

Publicado por laura (5 intervenciones) el 30/04/2006 18:09:52
Hola haber si esto te sirve

//convierte decimal hexadecimal y binario
#include<process.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int a,i,b,op;

char resp='s';

void main()
{
cout<<system("color a");
char v[100];
while(resp=='s')
{
cout<<"\n\t\tQue desea Hacer" << endl;
cout<<"\n\t1-Convertir Decimal a Binario"<< endl;
cout<<"\n\t2-Convertir Decimal a Octal"<<endl;
cout<<"\n\t3-Convertir Decimal a Hexadecimal"<<endl;

cin>>op;
while(op<1||op>3)
{system("cls");
cout<<"\n\tOpcion Ivalida" << endl;
cout<<"\n\t1-Decimal a Binario"<< endl;
cout<<"\n\t2-Decimal a Octal"<<endl;
cout<<"\n\t3-Decimal a Hexadecimal"<<endl;
cin>>op;
}

switch(op)
{
case 1:
{
cout<<"\n\tIngrese el numero a convertir a binario.......:";
cin>>a;
int n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;
v[i]=a%2;
a=a/2;
b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En binario es ";
for(i=b-1;i>=0;i--){
if(v[i]==20)
{cout<<"";}else
cout<< (int)v[i];}
}break;
case 2:
{
cout<<"\n\tIngrese el numero a convertir a Octal.......:";
cin>>a;
int n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;
v[i]=a%8;
a=a/8;
b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En octal es ";
for(i=b-1;i>=0;i--){
if(v[i]==20)
{cout<<"";}else
cout<< (int)v[i];}
}break;
default:
{cout<<"\n\tIngrese el numero a convertir a hexadecimal.......:";
cin>>a;
double n=a;
for(i=0;i<=100;i++)
{if(a<1)
break;

v[i]=a%16;
a=a/16;
b=b+1;
}
cout<<"\n\tEl numero "<<n <<" En Hexadecimal es ";
for(i=b-1;i>=0;i--){
if(v[i]<=9)
cout<< (int)v[i];
else
if(v[i]==10)
cout<< "A";
else
if(v[i]==11)
cout<< "B";
else
if(v[i]==12)
cout<< "C";

else
if(v[i]==13)
cout<< "D";
else
if(v[i]==14)
cout<< "E";else
if(v[i]==20)
cout<<"";
else if(v[i]=15)
cout<< "F";

}
}
}


cout<<"\n\tOtra s/n?";
cin>>resp;

if(resp=='s'){
system("cls");
//al terminar lleno todo el array con el valor 20, o con el que sea
for(i=0;i<=100;i++)
v[i]=20;
}
else
system("pause");
}

}

ESTE PROGRAMA ES PARA CONVERTIR A DIFERENTES BASES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambio de base 2 a 10

Publicado por fernando.gomez (1603 intervenciones) el 01/05/2006 02:16:08
En escencia, un número son bytes agrupados. Eso de pasarlo a decimal, binario, octal o hexadecimal, tiene sentido sólo para su representación como cadena de texto.

Por lo tanto, lo que necesitas es convertir ese número a cadena de texto, y para ello puedes emplear el parámetro "radix" de la función itoa (o ltoa). Por ejemplo, el siguiente programa:

int main ()
{
int i;
char buffer [33];

i = 1750;
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binario: %s\n",buffer);
return 0;
}

tiene la siguiente salida:

decimal: 1750
hexadecimal: 6d6
binario: 11011010110

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar