#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void menu();
void trans(int);
main()
{
menu();
}
void menu()
{
int tipo=0, opc;
do
{
cout<<endl;
cout<<" [1] Decimal-Binario"<<endl;
cout<<" [2] Decimal-Hexadecimal"<<endl;
cout<<" [3] Salir"<<endl;
cin>>opc;
}while((opc<1)||(opc>3));
switch(opc)
{
case 1:
system("cls");
tipo=2;
trans(tipo);
system("cls");
menu();
break;
case 2:
system("cls");
tipo=16;
trans(tipo);
system("cls");
menu();
break;
}
}
void trans(int tipo)
{
int num, resto[100], vector[100], cociente[100], i=0, j=0, ndiv=0, cont;
char resp;
do
{
cout<<" Numero: "; cin>>num;
do
{
resto=(num%tipo);
ndiv++;
cociente=(num/tipo);
num=cociente;
i++;
}while(cociente[i-1]!=0);
cout<<" El numero nuevo seria: ";
j=(ndiv-1);
for (int z=0; z<ndiv; z++)
{
cont=0;
do
{
vector[z]=resto[j];
j--;
cont=1;
}while(cont!=1);
}
for (int x=0; x<ndiv; x++)
{
if(tipo==16)
{
if((vector
- >-1)&&(vector
- <10))
cout<<vector
- ;
if(vector
- ==10)
cout<<"A";
}
if(vector
- ==11)
cout<<"B";
}
if(vector
- ==12)
cout<<"C";
}
if(vector
- ==13)
cout<<"D";
}
if(vector
- ==14)
cout<<"E";
}
if(vector
- ==15)
cout<<"F";
}
}
else
{
cout<<vector
- ;
}
cout<<endl;
cout<<" Desea repetir [S/N]: ";
cin>>resp;
if ((resp=='s')||(resp=='S'))
{
ndiv=0;
i=0;
j=0;
for(int c=0; c<20; c++)
{
vector[c]=0;
resto[c]=0;
cociente[c]=0;
}
}
}while((resp=='s')||(resp=='S'));
}
ACA ESTA EL CODIGO DE LA INTERFAZ TAMBIEN HECHO EN DEV C++
#include <windows.h>
#include "IDS.h"
#define ID_ActionButton 101
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
typedef struct stDatos {
int Texto[80];
} DATOS;
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
MSG mensaje;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = "Ventana";
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = "Menu";
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND);
if(!RegisterClassEx(&wincl)) return 0;
hwnd = CreateWindowEx(
0, /* Posibilidades de variación */
"Ventana", /* Nombre de la clase */
"Programa Beta", /* Texto del título */
WS_OVERLAPPEDWINDOW, /* Tipo por defecto */
CW_USEDEFAULT, /* Windows decide la posición */
CW_USEDEFAULT, /* donde se coloca la ventana */
544, /* Ancho */
275, /* Alto en pixels */
HWND_DESKTOP, /* La ventana es hija del escritorio */
NULL, /* Sin menú */
hThisInstance, /* Manipulador de instancia */
NULL /* No hay datos de creación de ventana */
);
/* Mostrar la ventana */
ShowWindow(hwnd, SW_SHOWDEFAULT);
/* Bucle de mensajes, se ejecuta hasta que haya error o GetMessage devuelva FALSE */
while(TRUE == GetMessage(&mensaje, NULL, 0, 0))
{
/* Traducir mensajes de teclas virtuales a mensajes de caracteres */
TranslateMessage(&mensaje);
/* Enviar mensaje al procedimiento de ventana */
DispatchMessage(&mensaje);
}
/* Salir con valor de retorno */
return mensaje.wParam;
}
/* Esta función es invocada por la función DispatchMessage() */
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HINSTANCE hInstance;
static HWND hwndButton = 0;
/* Variables para diálogo */
static DATOS Datos;
static HFONT hfont;
HWND hctrl;
switch (msg) /* manipulador del mensaje */
{
case WM_CREATE:
hwndButton = CreateWindow ("button","Decimal",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,50,40, 61, 20,
hwnd,(HMENU)ID_ActionButton,((LPCREATESTRUCT) lParam)->hInstance,NULL);
hwndButton = CreateWindow ("button","Binario",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,150,40, 61, 20,
hwnd,(HMENU)ID_ActionButton,((LPCREATESTRUCT) lParam)->hInstance,NULL);
hwndButton = CreateWindow ("button","Hexadecimal",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,250,40, 90, 20,
hwnd,(HMENU)ID_ActionButton,((LPCREATESTRUCT) lParam)->hInstance,NULL);
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
/* Insertar control Edit */
hctrl = CreateWindowEx(
0,
"EDIT", /* Nombre de la clase */
"", /* Texto del título, no tiene */
ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, /* Estilo */
80, 100, /* Posición */
100, 20, /* Tamaño */
hwnd, /* Ventana padre */
(HMENU)ID_TEXTO, /* Identificador del control */
hInstance, /* Instancia */
NULL); /* Sin datos de creación de ventana */
/* Inicialización de los datos de la aplicación */
SendMessage(hctrl, EM_SETLIMITTEXT, 10, 0L);
SendMessage(hctrl, WM_SETTEXT, 0, (LPARAM)Datos.Texto);
hfont = (HFONT)GetStockObject( DEFAULT_GUI_FONT );
SendMessage(hctrl, WM_SETFONT, (WPARAM)hfont, MAKELPARAM(TRUE, 0));
SetFocus(hctrl);
return 0;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case ID_ActionButton:
//Datos.Texto=Datos.Texto+100;
SendMessage(hctrl, WM_SETTEXT, 0, (LPARAM)Datos.Texto);
break;
case CM_SALIR:
DestroyWindow(hwnd);
break;
}
break;
case WM_DESTROY:
DeleteObject(hfont);
PostQuitMessage(0); /* envía un mensaje WM_QUIT a la cola de mensajes */
break;
default: /* para los mensajes de los que no nos ocupamos */
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
ACA EL CODIGO DEL FICHERO IDS.H
/* Identificadores */
/* Identificadores de comandos */
#define CM_DIALOGO 101
#define CM_SALIR 103
/* Identificadores de diálogo */
#define ID_TEXTO 100
#define ID_ACTIVAR 101
Y ACA EL CODIGO DEL FICHERO DE RECURSOS
#include <windows.h>
#include "IDS.H"
Menu MENU
BEGIN
POPUP "&Principal"
BEGIN
MENUITEM "&Salir", CM_SALIR
END
END
-----------------------------------------------------------------------------------------------
NO SE COMO HACER PARA UNIR AMBOS PROGRAMAS... MI IDEA ES QUE CADA BOTON "DECIMAL, BINARIO Y HEXA" TENGAN UN CUADRO DE DIALOGO DONDE ESCRIBIR EL VALOR CORRESPONDIENTE (VALIDADO) Y QUE CUANDO PULSEN SOBRE EL BOTON EN CUESTION SALGA LA CONVERION EN LOS OTROS CUADROS DE DIALOGO.. ADEMAS DE UN BOTON "CLEAR" QUE BORRE TODOS LOS CAMPOS! ESPERO Q PUEDAN AYUDARME