CALCULADORA VISUAL EN VISUAL C++
Creamos una aplicación MFC *.exe que le llamamos Calculadora_Visual (por ejemplo), una aplicación del tipo SDI, y los demás pasos por defecto excepto en el último en que escogemos como clase base CFormView (en lugar de CView).
Introducimos en el formulario: Un Edit y tantos botones como se ven en la figura agrupados por Group Box (opcional).
Declaramos las variables en el fichero CalculadoraView.h
Como públicas:
public:
bool encendido, coma;
int operacion;
double numero1, numero2, resultado, memoria;
CString
pantalla;
Inicializamos las variables en la función OnInitialUpdate del fichero CalculadoraView.cpp de la siguiente forma:
void CCalculadora_visualView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//Las líneas de encima
las introduce el editor asistente
encendido =
true;
coma = false;
operacion = 0;
numero1 = 0;
numero2 = 0;
resultado =
0;
memoria= 0;
pantalla =
"0";
SetDlgItemText(IDC_EDIT1,pantalla);
}
Introducimos el código de los botones pulsando en cada uno de ellos y asociándole la función correspondiente de manera que el código que se le añade seria el siguiente:
void CCalculadora_visualView::OnOnOff()
{
//
TODO: Add your control notification handler code here
if(encendido)
{
pantalla="";
encendido=false;
}
else
{
encendido
= true;
coma
= false;
operacion = 0;
numero1 = 0;
numero2 = 0;
resultado
= 0;
memoria= 0;
pantalla = "0";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
void CCalculadora_visualView::On1()
{
//
TODO: Add your control notification handler code here
if(encendido)
{
if(pantalla=="0")
{
pantalla="1";
}
else
{
pantalla = pantalla + "1";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On2()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="2";
}
else
{
pantalla = pantalla + "3";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On3()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="3";
}
else
{
pantalla = pantalla + "3";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On4()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="4";
}
else
{
pantalla = pantalla + "4";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On5()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="5";
}
else
{
pantalla = pantalla + "5";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On6()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="6";
}
else
{
pantalla = pantalla + "6";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On7()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="7";
}
else
{
pantalla = pantalla + "7";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On8()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="8";
}
else
{
pantalla = pantalla + "8";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::On9()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="9";
}
else
{
pantalla = pantalla
+ "9";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::OnButton14()
{
if(encendido)
{
if(pantalla=="0")
{
pantalla="0";
}
else
{
pantalla = pantalla + "0";
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::OnComa()
{
if(encendido)
{
if(coma)
{
}
else
{
pantalla = pantalla + ".";
coma=true;
}
SetDlgItemText(IDC_EDIT1,pantalla);
}
}
void CCalculadora_visualView::OnMas()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
operacion=1;
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnMenos()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
operacion=2;
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnPor()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
operacion=3;
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnDivision()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
operacion=4;
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnPorCiento()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
operacion=5;
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnRaiz()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
numero1=sqrt(numero1);
pantalla.Format("%f",numero1);
SetDlgItemText(IDC_EDIT1,pantalla);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnCuadrado()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
numero1=pow(numero1,2);
pantalla.Format("%f",numero1);
SetDlgItemText(IDC_EDIT1,pantalla);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnSeno()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
numero1=sin(numero1*3.141592/180);
pantalla.Format("%f",numero1);
SetDlgItemText(IDC_EDIT1,pantalla);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnCoseno()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
numero1=cos(numero1*3.141592/180);
pantalla.Format("%f",numero1);
SetDlgItemText(IDC_EDIT1,pantalla);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnPotencia()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero1=atof(pant);
operacion=6;
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnIgual()
{
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
numero2=atof(pant);
switch(operacion)
{
case 1:
resultado = numero1 + numero2;
break;
case 2:
resultado = numero1 - numero2;
break;
case 3:
resultado = numero1 * numero2;
break;
case 4:
if(numero2==0)
{
SetDlgItemText(IDC_EDIT1,"Error
divisor cero");
}
else
{
resultado = numero1 / numero2;
}
break;
case 7:
resultado = pow(numero1,numero2);
break;
}
pantalla.Format("%f",resultado);
if(operacion==0 &&
numero2==0)
{
}
else
{
SetDlgItemText(IDC_EDIT1,pantalla);
}
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnMemoryIn()
{
//
TODO: Add your control notification handler code here
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
memoria=atof(pant);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnMemoryMas()
{
//
TODO: Add your control notification handler code here
if(encendido)
{
CString pant;
GetDlgItemText(IDC_EDIT1,pant);
memoria=memoria + atof(pant);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnMemoria()
{
// TODO: Add
your control notification handler code here
if(encendido)
{
pantalla.Format("%10f",memoria);
SetDlgItemText(IDC_EDIT1,pantalla);
pantalla="0";
coma=false;
}
}
void CCalculadora_visualView::OnClear()
{
//
TODO: Add your control notification handler code here
if(encendido)
{
pantalla="0";
SetDlgItemText(IDC_EDIT1,pantalla);
coma=false;
}
}