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;

            }         

 

           

}