四則運算計算器

2021-10-02 22:14:05 字數 1939 閱讀 2442

今天做個帶視窗的c#四則運算計算器

輸入中綴表示式(自然表示式) 可以用list來放

先把它變成字尾表示式(逆波蘭表示式)

用乙個棧放運算子,另乙個棧放字尾表示式

運算子優先順序:

1:(2:+ -

3:* /

4:)從左到右遍歷中綴表示式

計算字尾表示式:

從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧中彈出兩個數字,第乙個取出的數字為右運算數,第二個為左運算數,進行運算。然後將結果放進數字棧中。如此反覆,直到讀完整個表示式後,留在數字棧中的那個數字就是最終結果。

一部分**

list<

char

> exp;

#region

獲取表示式

#endregion

//獲取運算子優先順序的函式//

private int

getpriority

(char ch)

/按等號開始計算//

private void

button17_click

(object sender, eventargs e)

//運算子

else

if(exp[i]

=='+'

|| exp[i]

=='-'

|| exp[i]

=='*'

|| exp[i]

=='/'

)else

else

break;}

yunsuanfu.

push

(exp[i]);

}}//括號

else

else

yunsuanfu.

pop();

}}}while

(yunsuanfu.count !=0)

//把棧中的字尾表示式挪到乙個陣列中

char

hz = new char

[houzhui.count]

;int length = houzhui.count;

while

(houzhui.count >0)

#endregion

#region 計算字尾表示式

stack<

double

> num = new stack<

double

>()

;double num1, num2, num3 =0;

for(

int i =

0; i < length ; i++

)//符號

else

else

if(hz[i]

=='-'

)else

if(hz[i]

=='*'

)else

if(hz[i]

=='/'

) num.

push

(num3);}

}double result = num.

pop();

textbox1.text =

(convert.

tostring

(result));

#endregion

}

some notes today

什麼時候會發生裝箱和拆箱

呼叫含有object型別的方法的時候,傳入值型別的時候就會發生裝箱,方法之中處理該引數的時候會發生拆箱。

定義泛型的時候,如果為了通用定義object型別,當新增值型別的時候就會發生裝箱和拆箱。

arraylist中的項是object型別,list是泛型(要在宣告時宣告集合內資料物件型別)

c# out引數在函式內部要賦值。如果是out引數陣列的話,用for迴圈賦值會報錯。for迴圈是不一定進入的。

簡單的四則運算計算器

include stdio.h include stdlib.h include string.h define string length 1000 define number length 40 結構體定義 struct symbol symbol head null,temp null str...

四則運算計算器(物件導向程式設計思維)

寫計算器感知 1,定義介面 public inte ce icalculate 2,定義類 public class mul icalculate 乘法類實現介面 public class add icalculate 加法類實現介面 等等 3,當我們要計算時我們可以統一建立icalculate類物...

字尾式四則運算計算器 堆疊實現

本計算器利用堆疊來實現。1 定義字尾式計算器的堆疊結構 因為需要儲存的單元不多,這裡使用順序棧,即用一維陣列來模擬堆疊 define max 100 int stack max int top 0 因此程式中定義了長度為max的一維陣列,這裡max用巨集定義為常數100,我們可以修改巨集定義而重新定...