- // calculatorDlg.h : 头文件
- //
- #pragma once
- // CcalculatorDlg 对话框
- class CcalculatorDlg : public CDialog
- {
- // 构造
- public:
- CcalculatorDlg(CWnd* pParent = NULL); // 标准构造函数
- // 对话框数据
- enum { IDD = IDD_CALCULATOR_DIALOG };
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
- // 实现
- protected:
- HICON m_hIcon;
- // 生成的消息映射函数
- virtual BOOL OnInitDialog();
- afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
- afx_msg void OnPaint();
- afx_msg HCURSOR OnQueryDragIcon();
- DECLARE_MESSAGE_MAP()
- public:
- CString m_show; //显示的值
- CString m_jisuanshi;//显示计算式
- bool b; //用来判断初始值是不是0
- CString num1; //临时数值1
- CString num2; //临时数值2
- CString sv;//堆栈用
- int op; //用来判断运算符
- static bool hasEqual;//判断是否已经计算了
- int Count(const TCHAR* str);//计算小数点后的位数
- int Jieceng(int n);//求n阶
- void SanjiaoFunc(int type);
- afx_msg void OnBnClickednum9();
- afx_msg void OnBnClickednum8();
- afx_msg void OnBnClickednum7();
- afx_msg void OnBnClickednum6();
- afx_msg void OnBnClickednum5();
- afx_msg void OnBnClickednum4();
- afx_msg void OnBnClickednum3();
- afx_msg void OnBnClickednum2();
- afx_msg void OnBnClickednum1();
- afx_msg void OnBnClickednum0();
- afx_msg void OnBnClickedbegin2();
- afx_msg void OnBnClickedadd();
- afx_msg void OnBnClickedresult();
- afx_msg void OnBnClickedbackspace();
- afx_msg void OnBnClickedsub();
- afx_msg void OnBnClickedmul();
- afx_msg void OnBnClickeddiv();
- afx_msg void OnBnClickedpoint();
- afx_msg void OnBnClickednum14();
- afx_msg void OnBnClickedpi();
- afx_msg void OnBnClickedmode();
- afx_msg void OnBnClickeddaoshu();
- afx_msg void OnBnClickedsqrt();
- afx_msg void OnBnClickedjieceng();
- afx_msg void OnBnClickedsin();
- afx_msg void OnBnClickedcos();
- afx_msg void OnBnClickedtan();
- afx_msg void OnBnClickedln();
- afx_msg void OnBnClickedlog();
- afx_msg void OnBnClickedjieceng7();
- afx_msg void OnBnClickedmr();
- afx_msg void OnBnClickedms();
- afx_msg void OnBnClickedopposite();
- afx_msg void OnBnClickedx2();
- afx_msg void OnBnClickedx3();
- afx_msg void OnBnClickedxy();
- afx_msg void OnBnClickedce();
- afx_msg void OnBnClickedmadd();
- };
- const int MAX_SIZE = 100;
- //堆栈类
- template <typename Type>
- class Stack
- {
- private:
- Type list[MAX_SIZE];
- int top;//标记
- public:
- Stack();
- void Push(const Type & a);//入栈
- Type Pop();//出栈
- void Clear();//清空栈
- Type GetTop();//获取栈顶元素
- bool IsEmpty()const;//判断堆栈是否为空
- bool IsFull()const;//判断堆栈是否满
- };
- //堆栈类Stack
- template<typename Type>
- //堆栈初始化
- Stack<Type>::Stack()
- {
- top =0;
- }
- template <typename Type>
- //入栈
- void Stack<Type>::Push(const Type &a)
- {
- if(top == MAX_SIZE)
- return;
- list[top++] = a;
- }
- //出栈
- template <typename Type>
- Type Stack<Type>::Pop()
- {
- return list[--top];
- }
- //清空堆栈
- template <typename Type>
- void Stack<Type>::Clear()
- {
- top =0;
- }
- //获取栈顶元素
- template <typename Type>
- Type Stack<Type>::GetTop()
- {
- int tp = top;
- return list[--tp];
- }
- //判断栈是否空
- template <typename Type>
- bool Stack<Type>::IsEmpty()const
- {
- return top == 0;
- }
- //判断栈是否满
- template <typename Type>
- bool Stack<Type>::IsFull()const
- {
- return top == MAX_SIZE;
- }