資源簡介
用vc60win32app寫的可進行四則混合運算的計算器,使用狀態方式保證輸入符合規則,使用逆波蘭表達式進行求值,可進行負數、小數運算。供學習參考。

代碼片段和文件信息
//?calculator.cpp?:?Defines?the?entry?point?for?the?application.
//?四則混合計算器
//狀態標志:
//0-開始狀態,可輸入數字、左括弧、小數點、負號,置空label1后再處理輸入;不允許輸入右括弧、運算符
//1-輸入了左括弧,左括弧數+1,可輸入數字、左括弧、小數點、負號,不允許輸入右括弧、運算符
//2-輸入了負號可輸入數字、小數點,不允許輸入左括弧、右括弧、運算符
//3-輸入了小數點(前提:1、其前為0、1和6狀態可輸入小數點;2、其前為4狀態,若操作數中無小數點,可輸入小數點),可輸入數字、右括?。ㄇ疤幔鹤罄ɑ?0,置左括弧數-1)、運算符(前提:小數點前為數,可輸入-+*/,若左括弧數=0且存在運算符(-+*/)可輸入=,即計算),不允許輸入左括弧、負號、小數點
//4-輸入了數字可輸入數字、運算符(-+*/,左括弧數=0可輸入=,即計算),小數點(前提:該操作數無小數點)、右括?。ㄇ疤幔鹤罄ɑ?0,置左括弧數-1),不允許輸入左括弧、負號
//5-輸入了右括弧,置左括弧數-1,可輸入右括?。ㄇ疤幔鹤罄ɑ?0,置左括弧數-1)、運算符(-+*/,左括弧數=0可輸入=,即計算),不允許輸入左括弧、數字、負號、小數點
//6-輸入了運算符(若輸入=,計算后,初始化),可輸入數字、左括弧、小數點、負號,不允許輸入右括弧、運算符
//鍵盤響應處理
//1、在資源中建立加速表,注意backspace鍵用虛鍵
//2、定義HACCEL?hAccelTable;
//3、在主函數中裝載加速表: hAccelTable?=?LoadAccelerators(hInstance?(LPCTSTR)IDC_CALCULATOR);
//計算處理:利用逆波蘭表達式求值
//先把中序表達式轉換為后序表達式(逆波蘭表達式)
//再利用堆棧進行逆波蘭表達式求值
#include?“stdafx.h“
#include?“resource.h“
//#include?
#include?
#include?“calculator.h“
#define?MAX_LOADSTRING?100
using?namespace?std;
//?Global?Variables:
HINSTANCE?hInst; //?current?instance
TCHAR?sztitle[MAX_LOADSTRING]; //?The?title?bar?text
TCHAR?szWindowClass[MAX_LOADSTRING]; //?The?title?bar?text
int?m_LeftRacketNums=0;?//左括弧數
int?m_OperatingState=0;?//狀態標志
char?lpszPushClassName[]?=?“BUTTON“;
int?m_Columns?=?5;?//數字按鈕每行5
int?m_NumericBtnTop?=?50;?//數字按鈕初始化位置
int?m_NumericBtnLeft?=?3;//數字按鈕初始化位置
int?m_interval?=?10;//間隔
//定義控件句柄
HWND?hwndNumericPush[10]; //0-9數字按鈕
HWND?hwndBracketPush[2]; //()按鈕
HWND?hwndMinusPush; //-負數符號按鈕
HWND?hwndDecimalPush; //小數點按鈕
HWND?hwndClearPush; //清除按鈕
HWND?hwndBackSpacePush; //退格按鈕
HWND?hwndOperatorPush[5]; //運算符按鈕
HWND?hwndStaticText;????????//靜態文本框
//?Foward?declarations?of?functions?included?in?this?code?module:
ATOM MyRegisterClass(HINSTANCE?hInstance);
BOOL InitInstance(HINSTANCE?int);
LRESULT?CALLBACK WndProc(HWND?UINT?WPARAM?LPARAM);
LRESULT?CALLBACK About(HWND?UINT?WPARAM?LPARAM);
void?addNumericpush(HWNDintint);?//創建數字按鈕
void?addBracketpush(HWNDintint);?//創建()按鈕
void?addMinuspush(HWNDintint);?//創建負號按鈕
void?addDecimalpush(HWNDintint);?//創建小數點按鈕
void?addClearpush(HWNDintint);?//創建清除按鈕
void?addBackSpacepush(HWNDintintint);?//創建退格按鈕
void?addOperatorpush(HWNDintintint);?//創建運算符按鈕
void?addStaticText(HWNDintintintint);?//創建靜態文本框
void?handleProc(intint?&int?&);?//計算器按鈕處理
int?getOperatingState(char?*);?//獲得最后一次輸入的狀態碼
void?InfixtoPostfix(char?*);?//中序轉后序(逆波蘭表達式)
double?Parse(char?*);?//逆波蘭表達式求值
int?APIENTRY?WinMain(HINSTANCE?hInstance
?????????????????????HINSTANCE?hPrevInstance
?????????????????????LPSTR?????lpCmdLine
?????????????????????int???????nCmdShow)
{
? //?TODO:?Place?code?here.
MSG?msg;
HACCEL?hAccelTable;
//?Initialize?global?strings
LoadString(hInstance?IDS_APP_title?sztitle?MAX_LOADSTRING);
LoadString(hInstance?IDC_CALCULATOR?szWindowClass?MAX_LOADSTRING);
MyRegisterClass(hInstance);
//?Per
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7680??2012-12-07?18:14??calculator\calculator.aps
?????文件??????21079??2012-12-08?11:16??calculator\calculator.cpp
?????文件???????4541??2012-02-20?17:50??calculator\calculator.dsp
?????文件????????545??2012-02-20?08:35??calculator\calculator.dsw
?????文件????????364??2012-02-21?09:14??calculator\calculator.h
?????文件???????1078??2012-02-20?08:35??calculator\calculator.ico
?????文件?????222208??2012-12-08?12:11??calculator\calculator.ncb
?????文件??????49664??2012-12-08?12:11??calculator\calculator.opt
?????文件???????1238??2012-12-07?18:13??calculator\calculator.plg
?????文件???????4793??2012-12-07?18:14??calculator\calculator.rc
?????文件?????208976??2012-12-07?18:13??calculator\Debug\calculator.exe
?????文件?????288744??2012-12-07?18:13??calculator\Debug\calculator.ilk
?????文件??????91228??2012-12-07?18:13??calculator\Debug\calculator.obj
?????文件????4903280??2012-12-06?17:20??calculator\Debug\calculator.pch
?????文件?????672768??2012-12-07?18:13??calculator\Debug\calculator.pdb
?????文件???????2300??2012-12-06?17:20??calculator\Debug\calculator.res
?????文件??????90701??2010-11-04?20:59??calculator\Debug\msado15.tlh
?????文件??????76655??2010-11-04?20:59??calculator\Debug\msado15.tli
?????文件??????13602??2007-02-17?06:43??calculator\Debug\mssc
?????文件??????12333??2007-02-17?06:43??calculator\Debug\mssc
?????文件?????110828??2012-12-06?17:20??calculator\Debug\StdAfx.obj
?????文件?????222208??2012-12-07?18:13??calculator\Debug\vc60.idb
?????文件?????585728??2012-12-07?18:13??calculator\Debug\vc60.pdb
?????文件??????13504??2007-02-17?06:43??calculator\mssc
?????文件??????12284??2007-02-17?06:43??calculator\mssc
?????文件???????2105??2012-02-20?08:35??calculator\ReadMe.txt
?????文件???????1867??2012-05-04?16:51??calculator\resource.h
?????文件????????318??2012-02-20?08:35??calculator\small.ico
?????文件????????297??2012-02-20?08:35??calculator\StdAfx.cpp
?????文件???????1031??2012-05-08?10:20??calculator\StdAfx.h
............此處省略5個文件信息
- 上一篇:MFC下的Email郵箱軟件
- 下一篇:圖書館管理系統c++課設
評論
共有 條評論