C 實現逆波蘭表示式求解四則混合運算的值

2021-10-04 14:03:01 字數 2790 閱讀 4893

**如下:

using system;

using system.collections;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

console.

writeline()

;// 轉換為逆波蘭表示式

console.

write

("字尾表示式:");

list<

string

> postfixexpressionlist =

getreversepolishnotation

(infixexpressionlist)

;foreach

(string code in postfixexpressionlist)

console.

writeline()

;// 計算結果

console.

write

("運算結果:");

double result =

calculatereversepolishnotation

(postfixexpressionlist)

; console.

writeline

(result)

; console.

readkey()

;}///

/// 是否為運算元

///

///

///

static

bool

isnumber

(string code)

///

/// 是否為運算子

///

///

///

static

bool

isoperator

(string code)

///

/// 獲取運算子優先順序

///

///

///

static

intgetoperatorpriority

(string code)

return priority;

}///

/// 計算兩個運算元的結果

///

///

///

///

///

static

double

getvalue

(string code,

double x,

double y)

return result;

}///

/// 解析四則混合運算表示式

///

///

///

static list<

string

>

getexpressionlist

(string expression)

else

list.

add(number)

; temp.

clear()

;}}else

list.

add(number)

; temp.

clear()

;}}}

return list;

}///

/// 獲取逆波蘭表示式

///

///

///

static list<

string

>

getreversepolishnotation

(list<

string

> list)

else

else

if(text ==

")")

operatorstack.

pop();

}else

else

else}}

}}// 遍歷剩餘運算子

while

(operatorstack.

count()

>0)

// 反轉運算子順序

list<

string

> result =

newlist

<

string

>()

;while

(operandstack.

count()

>0)

result.

reverse()

;return result;

}///

/// 計算逆波蘭表示式

///

///

///

static

double

calculatereversepolishnotation

(list<

string

> list)

else

}return stack.

pop();

}}}

執行結果如下:

中綴表示式:2*(3+4)

字尾表示式:234+*

運算結果:14

四則運算表示式 逆波蘭表示式

感覺是一塊比較偏門的東西,特此記錄下 或者叫字尾表示式,我們原先用的一直都是中綴表示式,但是因為如果表示式過長,計算機計算起來不方便。需要先遍歷一邊,找出其中的 進行優先計算,如果有多個 疊加的話就更麻煩了。於是為了計算機的方便計算,將中綴表示式轉換成字尾表示式,計算機便可以使用棧的特性,來快速的計...

逆波蘭表示式解決四則運算

逆波蘭表示式又叫做字尾表示式,它將複雜表示式轉換為可以依靠簡單的操作得到計算結果的表示式,解決了四則運算中括號改變運算子優先順序的問題。四則運算的表示式一般都是中綴表示式如 1 2 3 4 5,即操作符在兩個運算元之間。四則運算需要兩個步驟,一是把中綴表示式轉為字尾表示式,二是由字尾表達生成結果 c...

不用逆波蘭表示式計算簡單四則運算

思路很簡單,按 分割,分割完給 分割然後給 最後給 分割,如果分割 後有 就算 有 就算 有 就算 直到結果。這裡有個值得注意的小問題,就是在 的時間,前面有負號和沒有負號,如果有 號,分割後第乙個索引是沒有值的,由於第一位是負號,於是算第乙個數要取反,後面就是都是減了,很簡單如下 public s...