Red de conocimiento informático - Descarga de software - Escribir una calculadora en C++

Escribir una calculadora en C++

Idea:

Usar una variable para marcar el operador (+ - * /), int flag=0 ? //1 es suma, 2 es resta, 3 es multiplicación, 4 significa división, 0 significa que no se presiona ningún operador.

Utilice dos variables CString para almacenar el primer y segundo operando. Tenga en cuenta que si es división, verifique si el segundo operando es 0.

Verifique el contenido ingresado en el cuadro de entrada de edición en cualquier momento. Solo puede haber un punto decimal como máximo. Cuando presione el punto decimal primero, se mostrará como "0".

Preste atención también a algunos detalles: operación continua, el resultado Si el número tiene punto decimal, se deben eliminar todos los 0 al final, etc.

Implementación:

editar control: Agregar variable de control: m_edit

Crear los botones anteriores respectivamente Cambiar a: IDC_0..........IDC_9, IDC_AC, IDC_C, IDC_CHU(dividir), IDC_C(multiplicar) , IDC_J(resta), IDC_ADD(agregar), IDC_DOT(punto), IDC_DY(igual)

Variables globales:?

CString str1, str;

int flag = 0; //0 significa ninguno, 1 significa suma, 2 significa resta, 3 significa multiplicación, 4 es división

bool bflag = false //Si la entrada es el segundo operando

El código es el siguiente:

void CcalcDlg::OnBnClickedAc() / /AC

{

flag = 0;

bflag = false;

str1 = _T("");

str = _T("");

m_edit.SetWindowTextW(_T( ""));

}

void CcalcDlg::OnBnClickedC () //C

{

OnBnClickedAc();

}

void CcalcDlg::OnBnClicked1() //1

{

if (bflag==true)

{

str1 = str;

str = _T ("");

bflag = false;

m_edit. SetWindowTextW(_T(""));

}

if (str == _T("0"))

{

cadena = _T("1");

}

else

{

cadena = cadena + _T("1" );

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked2() //2

{

if (bflag == verdadero)

{

str1 = str;

str = _T ("");

bflag = false;

m_editWindowTextW(_T(""));

}

if. (cadena == _T("0"))

{

cadena = _T("2");

}

else

{

str = str + _T("2" );

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked3() //3

{

if (bflag == true)

{

str1 = str;

str = _T ("");

bflag = false;

m_edit. Establecer texto de ventana W (

_T(""));

}

if (str == _T("0"))

{

str = _T("3");

}

else

{

cadena = cadena + _T("3");

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked4() //4

{

if (bflag == verdadero)

{

str1 = str;

str = _T(" ");

bflag = false;

m_edit.SetWindowTextW(_T(""));

}

if (str == _T("0"))

{

cadena = _T("4");

}

más

{

str = str + _T("4");

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked5() //5

{

if (bflag == true)

{

str1 = str;

str = _T("");

bflag = false;

m_edit.SetWindowTextW( _T(""));

}

if (str == _T("0"))

{

str = _T("5");

}

else

{

cadena = cadena + _T("5");

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked6() //6

{

if (bflag == verdadero)

{

str1 = str;

str = _T(" ");

bflag = false;

m_edit.SetWindowTextW(_T(""));

}

if (str == _T("0"))

{

cadena = _T("6");

}

más

{

str = str + _T("6");

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked7() //7

{

if (bflag == true)

{

str1 = str;

str = _T("");

bflag = false;

m_edit.SetWindowTextW( _T(""));

}

if (str == _T("0"))

{

cadena = _T("7");

}

else

{

cadena = cadena + _T("7")

;

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked8() //8

{

if (bflag == verdadero)

{

str1 = str;

str = _T( "");

bflag = false;

m_edit.SetWindowTextW(_T(""));

}

if ( str == _T("0"))

{

cadena = _T("8");

}

más

{

str = str + _T("8");

}

m_edit.SetWindowTextW(str);

p>

}

void CcalcDlg::OnBnClicked9() //9

{

if (bflag == verdadero)

{

str1 = str;

str = _T("");

bflag = false;

m_edit.SetWindowTextW (_T(""));

}

if (str == _T("0"))

{

str = _T("9");

}

else

{

str = str + _T ("9") ;

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClicked0() //0

{

si (bflag == verdadero)

{

str1 = str;

str = _T( "");

bflag = false;

m_edit.SetWindowTextW(_T(""));

}

if ( str != _T("0"))

{

str = str + _T("0");

m_edit. SetWindowTextW(str);

}

}

void CcalcDlg::OnBnClickedDot() //Punto

{

if (bflag == verdadero)

{

str1 = str;

str = _T("");

bflag = falso;

m_edit.SetWindowTextW(_T(""));

}

if (str.Find('.') != -1)

return;

if (str == _T("0") || str == _T(""))

{

cadena = _T("0.");

}

else

{

cadena = cadena + _T(". ");

}

m_edit.SetWindowTextW(str);

}

void CcalcDlg::OnBnClickedChu () //Excepto

{

>if (str != _T(""))

{

bandera = 4;

bflag = verdadero;

}

}

void CcalcDlg::OnBnClickedCheng() //Multiplicar

{

if (str != _T("") )

{

bandera = 3;

bflag = verdadero;

}

}

void CcalcDlg::OnBnClickedJ() //Restar

{

if (str != _T(""))

{

bflag = true;

flag = 2;

}

}

void CcalcDlg::OnBnClickedAdd() //Añadir

{

if (str != _T(""))

{

bandera = 1;

bflag = true;

}

}

void CcalcDlg::OnBnClickedDy() //Igual

{

doble a, b;

b = _ttof(str);

a = _ttof(str1);

CString s;

cambiar (bandera)

{

caso 1: //Agregar

s.Format(_T("%f") , a + b);

romper;

caso 2: //resta

s.Format(_T("%f"), a - b );

romper;

caso 3: //Multiplicar

s.Format(_T("%f"), a * b); p>

romper;

caso 4: //except

if (str != _T("0"))

{

s.Format(_T("%f"), a / b);

}

else

{

MessageBox(_T("El divisor es 0"));

OnBnClickedAc();

}

break;

predeterminado:

s = _T("");

}

int f = s.Find('.');

if (f != -1)

{

int i = s.GetLength();

mientras ('0' == s .GetAt( i - 1))

{

s.Delete(i - 1, 1);

i--;

}

i = s.GetLength();

if ('.' == s.GetAt(i - 1))

{

s.Delete(i - 1, 1);

}

}

m_edit.SetWindowTextW(s);

str = _T("");

str1 = _T("");

bandera = 0;

bflag = false;

}