Red de conocimiento informático - Conocimiento del nombre de dominio - Código fuente de emergencia para una calculadora escrita en VC 6.0

Código fuente de emergencia para una calculadora escrita en VC 6.0

Archivo de encabezado

clase CCacl2Dlg: CDialog público

{

// estructura

Público:

int m_fun ; //m_fun es un operador, por ejemplo:

void AddFun(int j); //Esta función es para ingresar números

void AddNum(int i); la función es para ingresar números

void AddNum(int i); //Esta función es para ingresar operadores

int m_ForS //Indica si la entrada es el

//primer número o segundo

bool m_Firx, m_secx; //m_fun es un operador como: m_fun es un operador, como: , -, *, /

int m_fun; //m_fun es un operador, como: , -, *, /

firx, m_secx // Indica si se ingresa la parte decimal en este momento

/ /es decir, double m_first, m_segundo; // El primer y segundo número

double m_firstz, m_segundoz; // La parte entera del primer y segundo número

double m_firstx, m_segundox; // La parte decimal del primer y segundo número

int m_firxw, m_secxw; //El número de dígitos en la parte decimal del primer y segundo número

int m_firzorf, m_seczorf ; //Indica si es un número negativo

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon()

afx_msg void On0(); /p>

afx_msg vacío On1();

afx_msg vacío On2()

afx_msg vacío On3();

afx_msg vacío On4();

afx_msg vacío On5();

afx_msg vacío On6 ();

afx_msg vacío On7(); ();

afx_msg vacío On9();

afx_msg vacío OnAdd();

afx_msg vacío OnBack(); void OnDiv();

afx_msg void OnGo();

afx_msg void OnOn()

afx_msg void OnSub(); > afx_msg vacío OnTim();

afx_msg vacío OnXsd();

afx_msg vacío OnZfh();

afx_msg vacío

OnAbtath();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

Archivo CPP

CCacl2Dlg::CCacl2Dlg(CWnd* pParent /*=NULL*/)

: CDialog(CCacl2Dlg::IDD, pParent)

{

// {{AFX_DATA_INIT(CCacl2Dlg)

m_x = 0.0;

//}}AFX_DATA_INIT

// Tenga en cuenta que en Win32, LoadIcon no necesita a seguir DestroyIcon

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_first=0.0; m_segundo=0.0 // Esta línea se inicializa de la siguiente manera

m_firstz=0; m_firstx=0.0;

m_segundoz=0; m_segundox=0.0; m_msec=0.0 ; m_mfun=0;

m_sfmf=FALSE; m_sfms=FALSE; m_sfmfun=FALSE;

}

void CCacl2Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CCacl2Dlg)

DDX_Control(pDX , IDC_RESULT, m_xedit);

DDX_Text(pDX, IDC_RESULT, m_x);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP (CCacl2Dlg,

//{{AFX_MSG_MAP(CCacl2Dlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON(

ON_BN_CLICKED(IDC_0, On0)

ON_BN_CLICKED(IDC_1, On1)

ON_BN_CLICKED(IDC_2, On2)

ON_BN_CLICKED(IDC_3, On3)

ON_ BN_CLICKED(IDC_4, On4)

ON_BN_CLICKED(IDC_5, On5)

ON_BN_CLICKED(IDC_6, On6)

ON_BN_CLICKED (IDC_7, On7)

ON_BN_ CLICKED(IDC_8, On8)

ON_BN_CLICKED(IDC_9, On9)

ON_BN_CLICKED(IDC_ADD, OnAdd)

ON_BN_CLICKED (ID

C_BACK, OnBack)

ON _BN_CLICKED(IDC_DIV, OnDiv)

ON_BN_CLICKED(IDC_GO, OnGo)

ON_BN_CLICKED(IDC_ON, OnOn)

ON_BN_CLICKED(IDC_SUB, OnSub)

ON_BN_CLICKED(IDC_TIM, OnTim)

ON_BN_CLICKED(IDC_XSD, OnXsd)

ON_BN_CLICKED(IDC_ZFH, OnZfh)

ON_BN_CLICKED(IDC_ ABTATH, OnAbtath)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////// /////////////////////////////////////////////////// //// ////////////////

// Controlador de mensajes CCacl2Dlg

void CCacl2Dlg::OnSysCommand(UINT nID, LPARAM lParam )

{

if ((nID amp; 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog: .OnSysCommand(nID, lParam);

}

}

// Si agrega un botón de minimizar al cuadro de diálogo, necesitará el siguiente código

// Dibuja el botón de minimizar. Para aplicaciones MFC que utilizan documentos/modelos de vista,

// el marco hace esto automáticamente:

// si agrega un botón de minimizar al cuadro de diálogo, necesitará el siguiente código

// para dibujar el icono.

OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); Para dibujar

SendMessage(WM_ ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Coloca el icono en el centro del rectángulo del cliente

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(amp;rect);

p>

int x = (rect.Width() - cxIcon 1) / 2;

int y = (rect.Height() - cyIcon 1) / 2;

// Dibujar icono

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog: .OnPaint();

}

}

// Cuando el usuario arrastra la ventana minimizada, el sistema llamará esta función para obtener el cursor.

>HCURSOR CCacl2Dlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CCacl2Dlg::On0( ) // Entrada 0

{

//TODO: Agregue su control al cursor.// TODO: Agregue su código de controlador de notificación de control aquí

AddNum (0);

}

void CCacl2Dlg::On1() //Entrada 1

{

// TODO: AddNum (1);

}

void CCacl2Dlg::On2() //Entrada 2

{

/ /TODO: Agregar su código de controlador de notificación de control aquí

AddNum(2);

}

void CCacl2Dlg::On3() // Ingrese 3

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

AddNum(3);

}

void CCacl2Dlg:: On4() // Entrada 4

{

// TODO: Agregue el código del controlador de notificación de control aquí

AddNum(4);

}

void CCacl2Dlg::On5() // Ingrese 5

{

/ /TODO: Agregue el código del controlador de notificaciones de control aquí

AddNum(5);

}

void CCacl2Dlg::On6() // Ingresa 6

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

AddNum(6);

}

void CCacl2Dlg::On7() // Entrada 7

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

AddNum(7);

}

void CCacl2Dlg ::On8() // Ingrese 8

{

// TODO: agregue aquí el código del controlador de notificación de control

AddNum(8);

}

void CCacl2Dlg::On9() //entrada 9

{

// TODO: AddNum(9

);

}

void CCacl2Dlg::OnAdd() //input

{

// TODO: agregue aquí el código del controlador de notificaciones de control

AddFun(1);

}

void CCacl2Dlg::OnBack() //Presiona la tecla de retorno

{

// TODO: agregue aquí su código de controlador de notificación de control

if(m_ForS==1) //Si el primer número se ingresa en este momento

{

if(m_firx==FALSE) //Si en este momento se ingresa el primer número Parte entera

{ if(m_fi

rstzlt; 10 ) //si la parte entera es menor que 10

{

m_firstz=0; //cambiar a 0

m_firzorf=1;

}

else

{

int y1=(int)m_firstz; //y1 es un número igual a la parte entera

p>

y1/=10; // Eliminar dígitos individuales

m_firstz=y1;

}

}

else //si solo hay un dígito en la parte fraccionaria de la entrada

{

if(m_firxw==1) //en este punto solo hay un dígito en la parte decimal

{

m_firstx=0.0; m_firxw=0; m_firx=FALSE; // Borrar la parte decimal

}

else

{

int y2=(int)(m_firstx*pow(10, m_firxw)); //Toma un número entero igual al número entero representado por todos los decimales, por ejemplo: 123 es igual a 0.

Por ejemplo, 123 es igual al número representado por la parte decimal de 0.123

y2/=10; m_firxw-- // Elimina el último dígito

m_firstx=y2*pow (10, ( -1)*m_firxw);

}

}

m_first=m_firzorf*(m_firstz m_firstx); // Calcula el primer número

m_x=m_first; UpdateData(FALSE); // Mostrarlo

}

else if(m_ForS==2) // Si se ingresa el segundo número , método de procesamiento Igual que el primer número

{

if(m_secx==FALSE)

{

if(m_segundozlt;10 )

{

m_segundoz=0;

m_seczorf=1

}

más

{

int y3=(int)m_segundoz

y3/=10

m_segundoz=y3; }

}

más

{

if(m_secxw==1)

{

m_segundox= 0.0; m_secxw=0; m_secx=FALSO;

}

más

{

int y4=(int)( m_segundox* pow(10, m_secxw));

y4/=10; m_secxw--;

m_segundox=y4*pow(10, (-1)*m_secxw);

}

}

m_segundo=m_seczorf*(m_segundoz m _segundox);

m_x=m_segundo; p>

}

}

}

void CCacl2Dlg::OnDiv() //Entrada

{

// TODO: AddFun(4);

}

void CCacl2Dlg::OnGo() //Presione = operación de símbolo

{

// TODO: agrega aquí el código del controlador de notificaciones de control

if(m_sfmf==TRUE&m_sfms==TRUE&amp;m_sfmfun==TRUE) //Si recuerdas el primero dos dígitos y operadores, i., i., i., i., i., i., i., i., i., ii.e., y luego presione el signo = nuevamente < sfmf=TRUE; =TRUE; m_sfmfun=TRUE; // Recuerda los números y operadores involucrados en la operación

m_mfir=m_result; m_msec=m_msec;

}

<; p> else if(m_sfmf= = VERDADEROamp;amp;m_sfms==FALSEamp;a

mp; m_sfmfun==FALSE) // Solo recuerda el primer número, como g., cuenta 2 3=5 y luego presiona *4=

{

if(m_fun= =1)m_result=m_mfir m_segundo;

else if(m_fun==2)m_result=m_mfir-m_segundo;

else if(m_fun==3)m_result=m_mfir*m_segundo;

else if(m_fun==4)m_result=m_ mfir/m_segundo;

m_sfmf=TRUE; m_sfms=TRUE; m_result; m_msec=m_segundo; m_mfun=m_fun;

}

else if(m_sfmf=TRUEamp;amp;m_sfms==TRUEamp;m_sfmfun==FALSE) //Recuerda el Se ingresó el primer número, no se ingresó el segundo número y se ingresó el operador.

Si presionas *= después de 2 3=5, el resultado será 5*5=25;

{

m_segundo=m_mfir;

if(m_fun ==1)m_result=m_mfir m_segundo;

else if(m_fun==2)m_result=m _mfir-m_segundo;

else if(m_fun==3)m_result=m_mfir* m_segundo;

else if(m_fun==4)m_result=m_mfir/m_segundo;

m_sfmf=TRUE; =m_result;m_msec=m_segundo;m_mfun=m_fun;

}

else if(m_sfmf==FALSEamp;amp;m_sfms= = FALSEamp;amp;m_sfmfun==FALSE)// Los dos primeros números y operadores no se memorizan. Vuelva a ingresarlos después de memorizarlos. Por ejemplo, después de calcular 2 3 = 5, ingrese 4 * 6 =

{

if (. m_EnterSec==FALSE) m_segundo=m_first;

Si (m_fun===1) m_result=m_first m_segundo;

En caso contrario, si (m_fun===2) m_result=m_first- m_segundo;

else if(m_fun==3)m_result=m_first*m_segundo;

else if(m_fun==4)m_result=m_first/m_segundo;

m_sfmf=VERDADERO; m_sfms=VERDADERO; m_sfmfun=verdadero;

m_mfir=m_result; m_msec =m_segundo;

}

m_x=m_resultado ;

UpdateData(FALSE); //Mostrar resultados

m_first=0.0; >

m_segundoz =0; m_segundox=0.0;

m_firx=FALSE; m_secx=FALSE;

m_firxw=0; m_secxw=0;

m_firzorf =1; m_seczorf= 1;

m_ForS=1

m_EnterSec=FALSE;

}

void CCacl2Dlg::OnOn( ) //Presiona

{

// TODO: Agrega tu control secondz=0; m_segundox=0.0

m_firx=FALSE;

m_firxw=0; m_secxw=0;

m_firzorf=1;

m_ForS=1; 0,0; m_

msec=0.0;

m_mfun=0;

m_EnterSec=FALSE; p> UpdateData(FALSE);

}

void CCacl2Dlg::OnSub() //entrada-

{

// TODO: agregue aquí el código del controlador de notificaciones de control

AddFun(2);

}

void CCacl2Dlg::OnTim() //input*

{

// TODO: agregue aquí el código del controlador de notificaciones de control

AddFun(3);

}

m_segundoz*=10; m_segundoz =i;

}

más

{

m_segundox = pow(10, (- 1)*m_secxw)*i;

}

m_segundo=m_seczorf*(m_segundoz m_segundox);

m_sfms=m_msec =0; >

m_x=m_segundo;

UpdateData(FALSE

}

}

void CCacl2Dlg: :AddFun(int j) //Función de controlador en el operador de entrada

{

if(m_sfmf==TRUEamp;amp;m_sfmfun==FALSEamp;amp; m_EnterSec==TRUE)

{ if(m_fun==1)m_result=m_mfir m_segundo;

más si(m_fun==2)m_result=m_mfir-m_segundo;

más si( m_fun==3)m_result=m_mfir* m_segundo;

else if(m_fun==4)m_result=m_mfir/m_segundo;

m_x=m_result; m_sfmf =TRUE;

UpdateData(FALSE).m_EnterSec=FALSE

m_firstx=0; ; m_segundoz=0; m_segundox=0; m_secxw=0;

m_ForS=2; m_seczorf=1

si (j==1) m_fun =1; >

En caso contrario, si (j==2) m_fun=2

En caso contrario, si (j==3) m_fun=3

En caso contrario, si (j=; =4) m_fun=4;

}

else if (m_sfmf==FALSEamp; amp; m_sfmfun==FALSEamp; m_EnterSec==TRUE) //si

En este punto hay un segundo número. Luego haga el cálculo, por ejemplo, ingrese 2 3 y presione *

{

If (m_fun==1) m_result=m_first m_segundo

De lo contrario, if (m_fun ==2) m_result=m_first-m_segundo;

En caso contrario, if (m_fun==3) m_result=m_first*m_segundo

En caso contrario, if (m_fun==4; ) m_result= m_first/m_segundo

m_x=m_result; m_first=m_result;

UpdateData(FALSE); m_EnterSec=FALSE; =m_resultado;

m_segundo=0; m_segundox=0; /p>

m_ForS=2; m_seczorf=1;

si(j==1)m_fun=1

si(j==2)m_fun=2; ;

p>

más si(j==3)m_fun=3;

más si(j==4)m_fun=4;

}

más

{

si(j==1)m_fun=1

más si(j==2)m_fun=; 2;

más si(j==3)m_fun=3;

más si(j==4)m_fun=4;

m_ForS=2 ;

m_x=0;

UpdateData(FALSO);

}

m_ sfmfun=FALSO; p>

}