當前位置:編程學習大全網 - 源碼下載 - Mu手遊源代碼

Mu手遊源代碼

//計算器源代碼//c++

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

# include & ltiostream & gt//iostream

#定義N 11 //表達式長度,用字符數組實現,19位有效數字。

//因為數字和運算符不會同時存儲在壹個數組中,所以定義如下:

// -11代表(

// -12)

// -13代表+

// -14代表-

// -15代表*

// -16代表/

float a[N]={3,-13,-11,5,-15,4,-13,3,-14,6,-12 };//表達式

int n = 10;//全局變量形式的表達式的實際長度。

int p = 0;//指向前括號或表達式的頭。

int at = 10;//指向後括號或表達式的結尾。

int m = 10;//掃描標誌位

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

//類定義

類別計算

{公共:

void mov(int sign);/////運算後,或刪除括號後,表達式向左移動。

void govern();//掃描函數掃描“()”,如果掃描“()”,則計算值。

//直接計算表達式值,不需要掃描。

void Ji suan(int & amp;壹、int & ampb);//主計算函數

};//類定義結束

//表達式為:3+(5*4+3-6)

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

//移動功能

void calculate::mov(int符號)

{

//有(1+5)這種情況,會成為(6)**的後繼元素。

for(int j = 0;sign+j & lt;= n-2;j++)

a[sign+j]= a[sign+j+2];//元素依次向前移動

n-= 2;//表長度減2

at-= 2;//指向後括號的符號向前移動)

}//移動結束

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

//Ji suman函數

void calculate::Ji suan(int & amp;at,int & ampp)

{

for(int I = at;p!= I;I-)//乘法、除法運算

{

if(a[I]=-15.000000)//發生乘法。

{

a[I-1]= a[I-1]* a[I+1];

mov(壹);

}//如果結束

if(a[I]=-16.000000)//出現除法。

{ a[I-1]= a[I-1]/a[I+1];

mov(壹);

}//如果結束

}//對於over //乘法,除法運算結束。

for(int j = at;p!= j;j-)//加減運算

{

if(a[j]=-13.000000)//加法發生。

{

a[j-1]= a[j-1]+a[j+1];

mov(j);

}//如果結束

if(a[j]=-14.000000)//出現除法。

{

a[j-1]= a[j-1]-a[j+1];

mov(j);

}//如果結束

}//for加減運算結束。

如果(p!=0)

{if (p+2==at) //如果(5)出現,去掉括號。

{

a[p]= a[p+1];

for(int j = 0;p+j & lt;= n-3;J++) //向前移動兩個單位

a[p+j+1]= a[p+j+3];//支付遠期價值

n-= 2;//表長度減2

p = 0;//去掉括號,表示針回到頭尾。

at = n;//去掉括號後,尾指

} // if (p+2==at)結束。

} //if (p!=0)結束

m = n+1;//給M 1

}//計算完畢

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

//掃描功能

void calculate::gover()

{//m用來表示下標的變化。每移位壹次,都要給m付壹個新的N值,也就是第壹次//移位後,要從尾部再掃描壹次。

for(;m & gt=0;m -)

{

”)出現在if (a [m] =-12.000000)//中。

{

at = m;//用at標記“)”的下標。

}

如果(a [m] =-11.000000)//"(出現。

{ p = m;//用p標記“(”的下標,()連續出現。計算()中的表達式值。

吉蘇安(at,p);

}//如果完成

}//掃描結束()

//如果沒有(),直接調用jisuan()。

//將兩個指針放回表達式的開頭和結尾,

吉蘇安(at,p);

}//管理端

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

Int main() //主音函數

{計算示例;//創建壹個對象

example . gover();//對象調用管理

printf("%f ",a[0]);//計算後,輸出結果。

返回0;

}

//改進目標:首先,實現用戶輸入操作表達式。

//第二,掃描表達式的正確性。

//第三,用Mfc設計用戶界面。

//

//存在的問題:

//第壹,參數傳遞有很多不理解的地方。

//第二,因為第壹個原因p,at沒辦法,只能做全局變量,因為全局變量太多了。

//第三,結構化程序不夠高,不能充分發揮面向對象的思想。

//鑒於以上三點,接下來就是改進了。

======================

還有壹個:

# include & ltwindows.h & gt

long WINAPI回調WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(h instance hinst,HINSTANCE phinst,

PSTR指令行,國際指令顯示)

{

//應用程序的名稱

靜態CHAR Appname[]= TEXT(" hex calc ");

// -

HWND hwnd

味精味精;

//窗口類創建

WNDCLASS wndclass

wnd class . style = CS _ HREDRAW | CS _ VREDRAW;

wndclass.lpfnWndProc = WndProc

wnd class . cbclsextra = 0;

wnd class . cbwndextra = DLGWINDOWEXTRA;

wnd class . h instance = hinst;

wndclass.hIcon = LoadIcon(NULL,IDI _應用);

wnd class . hcursor = load cursor(NULL,IDC _ ARROW);

wnd class . HBR background =(HBRUSH)(COLOR _ BTN face+1);

wndclass.lpszMenuName = NULL

wnd class . lpsz class name = Appname;

// -

//創建並顯示窗口

如果(!register class(& amp;wndclass))

{

MessageBox(NULL,TEXT("該程序需要Windows NT!"),

Appname,MB _ icon hand);

返回0;

}

hwnd = CreateDialog(hinst,Appname,0,NULL);

ShowWindow(hwnd,cmdshow);

更新窗口(hwnd);

// -

//發送消息

while(GetMessage(& amp;msg,NULL,0,0))

{

翻譯消息(& amp味精);

dispatch message(amp;味精);

}

// -

返回msg.wParam

}

void ShowNumber(HWND hwnd,UINT iNumber)

{

char SZ buffer[20];

wsprintf(szBuffer,TEXT("%X ",iNumber);

SetDlgItemText(hwnd,VK_ESCAPE,SZ buffer);

}

DWORD Calclt(UINT iFirstNum,int iOperation,UINT iNum)

{

開關(操作)

{

大小寫“=”:

返回iNum

大小寫“+”:

返回iFirstNum+iNum;

大小寫'-':

返回iFirstNum-iNum;

大小寫' * ':

返回iFirstNum * iNum

格' & amp':

返回iFirstNum & ampiNum

案例“|”:

返回iFirstNum | iNum

凱斯·'^':

返回ifirstnum ^ inum;

大小寫' & lt':

返回iFirstNum & lt& ltiNum

大小寫“>”:

返回iFirstNum & gt& gtiNum

案例“/”:

返回iNum?iFirstNum/iNum:MAXDWORD;

案例“%”:

返回iNum?iFirstNum % iNum:MAXDWORD;

默認值:

返回0;

}

}

長WINAPI回調WndProc(HWND hwnd,UINT消息,WPARAM wParam,LPARAM lParam)

{

static BOOL bNewNumber = TRUE

靜態互操作= ' = ';

靜態UINT iNumber,iFirstNum

HWND hButton

//消息列表或進程

開關(消息)

{

案例WM_KEYDOWN:

如果(wParam!= VK _左)

打破;

wParam = VK _ BACK;

案例WM_CHAR:

if((wParam =(wParam)char upper((char *)wParam))= = VK _ RETURN)

wParam = ' =

if(hButton = GetDlgItem(hwnd,wParam))

{

SendMessage(hButton,BM_SETSTATE,1,0);

睡眠(100);

SendMessage(hButton,BM_SETSTATE,0,0);

}

其他

{

message beep(0);

打破;

}

案例WM_COMMAND:

SetFocus(hwnd);

if(LOWORD(wParam) == VK_BACK)

ShowNumber(hwnd,iNumber/= 16);

else if(LOWORD(wParam)= = VK _轉義)

ShowNumber(hwnd,iNumber = 0);

else if(isxdigit(LOWORD(wParam)))

{

if(b新聞編號)

{

iFirstNum = iNumber

iNumber = 0;

}

bNewNumber = FALSE

if(iNumber & lt;= MAXDWORD & gt& gt4)

ShowNumber(hwnd,iNumber = 16 * iNumber+wParam-

(isdigit(wParam)?0 ':' A '-10));

其他

message beep(0);

}

其他

{

如果(!bNewNumber)

ShowNumber(hwnd,iNumber = Calclt(iFirstNum,iOperation,iNumber));

bNewNumber = TRUE

io operation = LOWORD(wParam);

}

返回0;

案例WM_DESTROY:

PostQuitMessage(0);

返回0;

}

// -

返回DefWindowProc(hwnd,message,wParam,lParam);

}

  • 上一篇:ISP、ICP、ASP分別指的是什麽
  • 下一篇:問道的快捷鍵是什麽?
  • copyright 2024編程學習大全網