Cambios de base numérica

Sergio Ferrer.

/* Este programa solicita un número binario de cuatro cifras; tantas veces como sea necesario hasta que sea correcto (compuesto solo con ceros y unos). A continuación consulta al usuario en que otra base desea conocer el valor del número introducido; también tantas veces como sea necesario hasta que sea correcta la opción solicitada( letras a,b,c y d). En función de la tecla pulsada el programa devolverá el valor del número de partida en determinadas bases (decimal, octal, hexadecimal o todas a la vez) */


#include<iostream>
using namespace std;

int main()
{
 //CABECERA
 cout<<"\n\t //CAMBIOS DE BASES//"<<endl;

 int num0_b2,num1_b2,num2_b2,num3_b2; //CIFRAS DEL NUMERO BINARIO
 int num_b10; //NUMERO DECIMAL
 char num_b16; //NUMERO HEXADECIMAL
 int num0_b8,num1_b8,num_b8; //CIFRAS DEL NUMERO OCTAL
 char control;

 //CONTROL DE QUE EL NUMERO INTRODUCIDO ES CORRECTO
 )

do{
 cout<<"\n Escriba CORRECTAMENTE las 4 cifras de un numero en binario: ";
 cin>>num3_b2>>num2_b2>>num1_b2>>num0_b2;
 }
while((num3_b2<0)||(num2_b2<0)||(num1_b2<0)||(num0_b2<0)||(num3_b2>1)
        ||(num2_b2>1)||(num1_b2>1)||(num0_b2>1));

cout<<"\n\t ***EL NUMERO EN BINARIO "<<num3_b2<<" "<<num2_b2<<" "
    <<num1_b2<<" "<<num0_b2<<" ES CORRECTO***"<<endl;

 //CALCULO DEL NUMERO DECIMAL
 num_b10 = (num0_b2*1)+(num1_b2*2)+(num2_b2*4)+(num3_b2*8);

 //CALCULO DEL NUMERO HEXADECIMAL
 switch(num_b10)
 {
 case 0: num_b16 = '0'; break;
 case 1: num_b16 = '1'; break;
 case 2: num_b16 = '2'; break;
 case 3: num_b16 = '3'; break;
 case 4: num_b16 = '4'; break;
 case 5: num_b16 = '5'; break;
 case 6: num_b16 = '6'; break;
 case 7: num_b16 = '7'; break;
 case 8: num_b16 = '8'; break;
 case 9: num_b16 = '9'; break;
 case 10: num_b16 = 'A'; break;
 case 11: num_b16 = 'B'; break;
 case 12: num_b16 = 'C'; break;
 case 13: num_b16 = 'D'; break;
 case 14: num_b16 = 'E'; break;
 case 15: num_b16 = 'F'; break;
 }

 //CALCULO DEL NUMERO OCTAL
 num1_b8 = num_b10/8;
 num0_b8 = num_b10%8;

 num_b8 = 10*num1_b8+num0_b8;

 //CONTROL DE QUE LA TECLA PULSADA ES CORRECTA
 while((control!='a')||(control!='b')||(control!='c')||(control!='d'))
 {
 cout<<"\n Pulse: 'a' para conocer su valor en base 10";
 cout<<"\n 'b' para conocer su valor en base 8";
 cout<<"\n 'c' para conocer su valor en base 16";
 cout<<"\n 'd' para conocer su valor en todas las bases nombradas: ";
 cin>>control;
 }

 if (control=='a')
 cout<<"\n\n\tEl valor del numero en base 10 es ---> "<<num_b10<<endl<<endl;
 else if (control=='c')
 cout<<"\n\n\tEl valor del numero en base 16 es ---> "<<num_b16<<endl<<endl;
 else if(control=='b')
 cout<<"\n\n\tEl valor del numero en base 8 es ---> "<<num_b8<<endl<<endl;
 else if(control=='d')
 {
 cout<<"\n\n\tEl valor del numero en base 10 es ---> "<<num_b10;
 cout<<"\n\tEl valor del numero en base 16 es ---> "<<num_b16;
 cout<<"\n\tEl valor del numero en base 8 es ---> "<<num_b8<<endl<<endl;
 }

 cout<<"\n\t\t ----------------------------------------"<<endl;
 cout<<"\t\t ----------------------------------------"<<endl<<endl;

 return 0;
}
Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s