You are on page 1of 5

8.

Debe desarrollar un programa que contenga el siguiente men


(1) Convertir de Decimal a Binario
(2) Convertir de Decimal a Octal
(3) Convertir de Binario a Decimal
(4) Salir

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

char menu()
{
char c;

printf("1 - Decimal -> Binario\n");
printf("2 - Decimal -> Octal\n");
printf("3 - Decimal -> Hexadecimal\n");
printf("4 - Binario -> Decimal\n");
printf("5 - Binario -> Octal\n");
printf("6 - Binario -> Hexadecimal\n");
printf("7 - Octal -> Decimal\n");
printf("8 - Octal -> Binario\n");
printf("9 - Octal -> Hexadecimal\n");
printf("A - Hexadecimal -> Decimal\n");
printf("B - Hexadecimal -> Binario\n");
printf("C - Hexadecimal -> Octal\n");
printf("S - Salir\n");

printf("\nSeleccione opcion: ");
c = getche();
return c;
}

unsigned long conversor(unsigned long n1,int base1,int base2)
{
unsigned long alg,mult=1,n2=0;
while (n1 > 0)
{
alg = n1 % base1;
n1 /= base1;
n2 += (alg*mult);
mult *= base2;
}
return n2;
}

void main()
{
unsigned long n;
char op;


for(;;)
{
clrscr();
op = menu();
clrscr();

switch(op)
{
case '1':
printf("Conversor Decimal -> Binario\n");
printf("Introduza un numero Decimal: ");
scanf("%lu",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;

case '2':
printf("Conversor Decimal -> Octal\n");
printf("Introduza um numero Decimal: ");
scanf("%lu",&n);
printf("Numero Octal correspondente: ");
printf("%lo",n);
break;

case '3':
printf("Conversor Decimal -> Hexadecimal\n");
printf("Introduza um numero Decimal: ");
scanf("%lu",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",n);
break;

case '4':
printf("Conversor Binario -> Decimal\n");
printf("Introduza un numero Binario: ");
scanf("%lu",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",conversor(n,10,2));
break;

case '5':
printf("Conversor Binario -> Octal\n");
printf("Introduza un numero Binario: ");
scanf("%lu",&n);
printf("Numero Octal correspondente: ");
printf("%lo",conversor(n,10,2));
break;

case '6':
printf("Conversor Binario -> Hexadecimal\n");
printf("Introduza un numero Binario: ");
scanf("%ld",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",conversor(n,10,2));
break;

case '7':
printf("Conversor Octal -> Decimal\n");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",n);
break;

case '8':
printf("Conversor Octal -> Binario\n");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;

case '9':
printf("Conversor Octal -> Hexadecimal\n");
printf("Introduza un numero Octal: ");
scanf("%lo",&n);
printf("Numero Hexadecimal correspondente: ");
printf("%lx",n);
break;

case 'A':
case 'a':
printf("Conversor Hexadecimal -> Decimal\n");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Decimal correspondente: ");
printf("%lu",n);
break;

case 'B':
case 'b':
printf("Conversor Hexadecimal -> Binario\n");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Binario correspondente: ");
printf("%lu",conversor(n,2,10));
break;

case 'C':
case 'c':
printf("Conversor Hexadecimal -> Octal\n");
printf("Introduza un numero Hexadecimal: ");
scanf("%lx",&n);
printf("Numero Octal correspondente: ");
printf("%lo",n);
break;

case 'S':
case 's':
exit(0);
break;

default:
printf("Opcion invalida!");
}
getch();
}
}

Y este en codigo c++

#include <iostream>
#include <string>
#include <math>
#include <conio>

using namespace std;

template <class T>
void Dec2Bin(T Value)
{
register int i;
int iNumBits=8;
T Mask=1 << iNumBits;
int Result;
cout << Value << "= ";
for(i=1;i<=iNumBits+1;i++){
Result=(Value & Mask) ? 1 : 0;
cout << Result;

Value<<=1;

}
cout << endl;

}

template <class T>
void Dec2Hex(T Value)
{
cout << Value << "= ";
cout << hex << Value;
cout << endl;
}

template <class T>
void Hex2Dec(T Value)
{
cout << hex << Value << "= ";
cout << dec << Value;
cout << endl;
}

int Search(char c)
{
int i;
char Num[]="01";
for(int i=0;i<2;i++){
if(Num[i]==c)
break;
}
return i;
}

int Bin2Dec(const char *String)
{
int i,iLenght;
int iResult=0;
iLenght=strlen(String);
iLenght--;
for(i=0;String[i]!=NULL;i++,iLenght--)...
iResult+=(Search(String[i])*pow(2,iLen...

}

return iResult;
}

int main(int argc, char **argv)
{
int iNum;
cout << "Numero a convertir: ";
cin >> iNum;
cout << "Decimal a binario." << endl;
Dec2Bin(iNum);
cout << "Decimal a hexadecimal." << endl;
Dec2Hex(iNum);
cout << "Hexadecimal a decimal." << endl;
Hex2Dec(iNum);
cout << "Binario a decimal." << endl;
cout << "1111= " << Bin2Dec("1111") << endl;
getch();
return 0;
}

You might also like