
Conversor multibase
C/Visual C
9.457 visualizaciones desde el 2 de Octubre del 2002
Programa que convierte en tiempo real, bases de octal a binario, decimal hexadecimal y viceversa, Se utiliza el mouse para mejor manejo del programa.

















/*Programa creado por Juan Carlos Albarr n Flores
Instituto Polit‚cnico Nacional
Escuela Superior de Ingenieria Mecanica y Electrica
Ingenieria en Comunicaciones y Electronica
carlos0_0@yahoo.com.mx
All Rights Reserved 2002-2003*/#include<dos.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
#define HEX 0
#define DEC 1
#define OCT 2
#define BIN 3
int i=0,choice=0;
void initmouse() //inicia el mouse
{ _AX=0;geninterrupt(0x33);
}void showmouse() //inicia la vista del mouse
{ _AX=1;geninterrupt(0x33);
}void hidemouse() //esconde el puntero del mouse
{ _AX=2;geninterrupt(0x33);
}void getmouse(int *button,int *x,int *y) //pone el mouse en la posicion x,y
{ _AX=3;geninterrupt(0x33);
*button=_BX;
*x=_CX;
*y=_DX;
}int getnum(char c)//para codigo numerico y alfanumerico
{int j;
char alpha_set[36]="0123456789abcdefghijklmnopqrstuvwzyz";
for(j=0;j<36;j++)
{if(alpha_set[j]==c)
break;
}return j;
}unsigned long convert_to_decimal(char *_num,int radix)
{//convierte los diferentes bases a decimal
int i,len; unsigned long dec=0;len=strlen(_num);
len--;
for(i=0;_num[i]!=NULL;i++,len--)
{dec+=(getnum(_num[i])*pow(radix,len));
} //hace sus operaciones y regresa el decimal
return dec;
}void display(int x,int y,char string[80])
{//es el display de las cadenas coordenadas de x,y
gotoxy(x,y);
cprintf(string);
}void make_screen_blue()//Hace la pantalla color Cyan
{textbackground(BLUE);
clrscr();
}void start_screen()//inicia la pantalla del programa
{ i=0;hidemouse();// manda el mouse
make_screen_blue();
textbackground(RED);
textcolor(WHITE);//texto color que desees
display(20,1,"Programa conversor Decimal, Binario y Hexadecimal");
display(15,2,"Introduce el n£mero y automaticamente se convienrte");
display(30,3,"Para salir presiona Escape");
textbackground(CYAN);//l¡neas de texto color que desees
display(10,5,"Hexadecimal:- "); //envia a pantalla texto
display(10,7,"Decimal :- ");
display(10,9,"Octal :- ");
display(10,11,"Binario :- ");
textbackground(BLUE);//cambia a color azul
display(24,5," ");
display(24,7," ");
display(24,9," ");
display(24,11," ");
if(choice==HEX)
gotoxy(24,5);
else if(choice==DEC)
gotoxy(24,7);
else if(choice==OCT)
gotoxy(24,9);
else if(choice==BIN)
gotoxy(24,11);
showmouse();
}void main() //funcion main :)
{char text[80]="\0",buffer[80];
char ch,*charhex,*chardec,*charoct,*charbin;
int button,mousex,mousey,x,y;
unsigned long deci;
initmouse();//inicia el mouse
start_screen();
showmouse();//aparece el mouse ;)
while(1)
{if(kbhit())
{ch=getch();
if(ch==27) //Para los que no sabian el 27 en ASCII es escape
break;
if(ch=='\b'&&wherex()>=24)//Si la tecla de retroceso es presionada el cursor regresa
{cprintf("\b");//Mueve el cursor un espacio
cprintf("%c",255);//Pon un espacio
cprintf("\b");//De nuevo regresa el cursor atr s
if(i!=0)
i--;
text[i]=NULL;
}else if(wherex()>=24&&ch>='0'&&ch<='f')
{cprintf("%c",ch);
text[i]=ch;
text[i+1]=NULL;
i++;
}x=wherex(),y=wherey();
switch(choice)
{ case HEX:deci=convert_to_decimal(text,16);
gotoxy(24,7);
printf("%ld ",deci);
gotoxy(24,11);
printf("%s ",ltoa(deci,buffer,2));
gotoxy(24,9);
printf("%s ",ltoa(deci,buffer,8));
break;
case DEC:deci=atol(text);
gotoxy(24,5);
printf("%s ",ltoa(deci,buffer,16));
gotoxy(24,9);
printf("%s ",ltoa(deci,buffer,8));
gotoxy(24,11);
printf("%s ",ltoa(deci,buffer,2));
break;
case OCT:deci=convert_to_decimal(text,8);
gotoxy(24,7);
printf("%ld ",deci);
gotoxy(24,5);
printf("%s ",ltoa(deci,buffer,16));
gotoxy(24,11);
printf("%s ",ltoa(deci,buffer,2));
break;
case BIN:deci=convert_to_decimal(text,2);
gotoxy(24,5);
printf("%s ",ltoa(deci,buffer,16));
gotoxy(24,7);
printf("%ld ",deci);
gotoxy(24,9);
printf("%s ",ltoa(deci,buffer,8));
break;
}gotoxy(x,y);
}getmouse(&button,&mousex,&mousey);
mousex++,mousey++;
if(mousex/8>23&&mousex/8<50&&mousey/8==4&&button==1)
choice=HEX,start_screen();
else if(mousex/8>23&&mousex/8<50&&mousey/8==6&&button==1)
choice=DEC,start_screen();
else if(mousex/8>23&&mousex/8<50&&mousey/8==8&&button==1)
choice=OCT,start_screen();
else if(mousex/8>23&&mousex/8<50&&mousey/8==10&&button==1)
choice=BIN,start_screen();
}}
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios