Adsence

miércoles, 15 de diciembre de 2010

De-decimal-a-octalhexagesimal-y-binario

Leave a Comment
[caption id="attachment_593" align="aligncenter" width="685"]De decimal a octa, hexagesimal y binario en C De decimal a octa, hexagesimal y binario en C[/caption]

Diseñar un pseudocódigo que convierta un número del sistema decimal a : a) sistema binario b)sistema octal c)sistema hexadecimal. Según se elija.



[cpp]

//106) Diseñar un pseudocidigo que convierta un numero del sistema decimal a :
//a) sistema binario b)sistema octal c)sistema hexadecimal. Segun se elija.

#include< stdio.h >
#include< conio.h >
void portada();
void final();
int datos();
int formula(int num,int divi);
main(){
char r;
portada();
printf("Disenar un pseudocodigo que convierta un numero del sistema decimal a :");
printf("a) sistema binario b)sistema octal c)sistema hexadecimal. Segun se elija.:\n");

do{
datos();
printf("Desea realizar otro analizis? (s/n): ");
scanf("%s",&r);
}while (r=='s');
final();
getch();
return 0;
};

int datos()
{
int num,divi,condicion/*por si se escoje una opcion no valida en el switch vuelva y pregunte*/;
char op;
printf("\nPor favor ingresa el Numero a Convertir: ");
scanf("%d",& num);
do{
printf("\nElije a que Sitema deseas Convertir: ");
printf("\n A) Sistema Binario ");
printf("\n B) Sistema Octal ");
printf("\n C) Sistema Hexagesimal \n");
scanf("%s",&op;);
switch (op){
case 'A': divi=2;condicion=2;break;
case 'B':divi=8;condicion=2;break;
case 'C':divi=16;condicion=2;;break;
default:
printf("************************************************************************\n");
printf("No es una Opcion Valida solo en Mayuscula (A,B,C)\n ");condicion=1;break;
printf("************************************************************************\n");
};
}while(condicion==1);
formula(num,divi);
};

int formula(int num,int divi)
{
int i=0,j,res[1000],dividendo;
dividendo=num;
do{/*INICIO EL PROCESO DE DIVISION PARA HALLAR LOS DIGITOS DEL NUMERO EN EL NUEVO SISTEMA*/
i=i+1;/*CONTADOR PARA ALMACENAR EN UN VECTOR LOS NUMEROS QUE VAN SALIENDO*/
res[i]=dividendo%divi;/*TOMA EL RESIDUO DE LA DIVISION COMO ELEMENTO DEL VECTOR(NO SE ALTERA EL DIVIDENDO)*/
dividendo=dividendo/divi;/*VARIA EL DIVIDENDO PARA CONTINUAR CON LA OPERACION*/
}while(dividendo >=divi);/*TERMINO DE HALLAR LOS DIGITOS SI EL DIVIDENDO ES MENOR QUE EL NUMERO EN QUE SE DIVIDE 2,8 O 16*/
if (dividendo >=10){/*SIEMPRE SE COLOCAN LOS NUMERO EN REVERSA EMPEZANDO POR EL DIVIDENDO QUE QUEDO*/
switch (dividendo){/*UTILIZO ESTO POR SI LO QUE QUEDO PERTENECE AL SISTEMA HEXAGESIMAL, LO CUALNOS DARA LAS LETRAS*/
case 10:printf("A");break;case 11:printf("B");break;
case 12:printf("C");break;case 13:printf("D");break;
case 14:printf("E");break;case 15:printf("F");break;
};/*CIERRO SWITCH*/
}else{/* Y ESTO SE UTILIZA SI EL NUMERO NO ES MAYOR DE 10(OSEA ES DEL SISTEMA BINARIO U OCTAL*/
printf("%d",dividendo);
};/*CIERRO EL IF*/
for (j=i;j >=1;j--){/*AQUI EMPIEZO A IMPRIMIR LOS RESIDUOS QUE GUARDE CON ANTERIORIDAD, EMPEZANDO POR EL ULTIMO HASTA EL PRIMERO*/
if (res[j] >=10){/*LO UTILIZO POR SI LOS RESIDUOS GUARDADOS PERTENECES AL SISTEMAS HEXAGESIMAL (10-15)(A-F)*/
switch (res[j]){
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
};/*CIERRO EL SWITCH*/
}else{/*SI EL NUMERO NO ES UJA LETRA LO IMPRIMO COMO SE GUARDO(SIRVE PARA BINARIO,OCTAL E INCLUSO HEXAGESIMAL, YA QUE PUEDEN HABER NUMEROS EN ESTE ULTIMO*/
printf("%d",res[j]);
};/*CIERRO EL IF*/
};/*CIERRO EL FOR*/
printf("\n\n");
};/*CIERRO LA FUNCION*/
void portada(){
printf("...............................................................................\a\n");
printf("................******.*****.** **.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.*** ***.** **.** .** **.**.**.***................\a\n");
printf("................ ** .*****.*******.*****.****.*****.*****..**................\a\n");
printf("................ ** .** **.** * **.** .** .*** ....**..**................\a\n");
printf("................**** .** **.** **.** .****.** **....**.****...............\a\n");
printf("..............................jamper91.blogspot.com............................\a\n");
printf("\n");
};
void final(){
printf("-------------------------------------------------------------------------------\a\n");
printf ("******************************************************************************\a\n");
printf (" Creado por jamper91@hotmail.com\n");
printf (" Cucuta Campeon\n");
printf ("******************************************************************************\a\n");
printf("-------------------------------------------------------------------------------\a\n");
};

[/cpp]

0 comentarios :