字串表示式計算C 程式設計

2021-04-12 18:08:01 字數 2460 閱讀 8354

字串表示式計算c#程式設計

在程式設計應用程式過程中,有時需要字串表示式的值。如字串:"23+56/(102-100)*((36-24)/(8-6))",結果=191。

根據資料結構棧的應用介紹,通過把表示式由中序式轉換成後序式,再用棧來進行計算。如上述字串表示式:"23+56/(102-100)*((36-24)/(8-6))",轉換為後序時為:"23|56|102|100|-|/|*|36|24|-|8|6|-|/|*|+"(其中字元"|"為分隔符)。

本程式**如下:在visual .net 2003 +winxp下編譯通過。

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

namespace stringexpressioncalculate

///

/// 清理所有正在使用的資源。

///

protected override void dispose( bool disposing )

}base.dispose( disposing );

}#region windows 窗體設計器生成的**

///

/// 設計器支援所需的方法 - 不要使用**編輯器修改

/// 此方法的內容。

///

private void initializecomponent()

#endregion

///

/// 應用程式的主入口點。

///

private void button1_click(object sender, system.eventargs e)

//中序轉換成後序表示式再計算

// 如:23+56/(102-100)*((36-24)/(8-6))

// 轉換成:23|56|102|100|-|/|*|36|24|-|8|6|-|/|*|+"

//以便利用棧的方式都進行計算。

private string  calculateparenthese***pression(string expression)

expressionstring += operand3 + "|";

}//取「c」處理

if(expression.length >0 && expression[0].tostring() == "(")

//取「)」處理

operand3 = "";

if(expression.length >0 && expression[0].tostring() == ")")

else

}while(true);

expressionstring += operand3;

expression = expression.substring(1);

}//取運算符號處理

operand3 = "";

if(expression.length >0 &&  (expression[0].tostring() == "*" || expression[0].tostring() == "/" || expression[0].tostring() == "+" || expression[0].tostring() == "-"))

else 

}else

expression = expression.substring(1); }}

operand3 = "";

while(operatorlist.count != 0)

expressionstring += operand3.substring(0, operand3.length -1);  ;

return calculateparenthese***pressionex(expressionstring);

// 第二步:把轉換成後序表達的式子計算

//23|56|102|100|-|/|*|36|24|-|8|6|-|/|*|+"

private string  calculateparenthese***pressionex(string expression)

else

}return operandlist[0].tostring();

}//判斷兩個運算子優先級別

private bool verifyoperatorpriority(string operator1,string operator2)

//計算

private float calculate(float operand1, float operand2,string operator2)

return operand1;}}

}

如何計算字串表示式

using system using system.codedom using system.codedom.piler using microsoft.csharp using system.reflection public class eval r n public object getval...

棧實現字串表示式計算

最近頻繁解決計算方面的問題,其中就有實現字串表示式計算返回結果值需求,通過使用棧實現,需要定義運算符號優先順序,其它就不細說,如下 csstack.cs using system namespace pyhb 設定棧大最大容量 public void initialize int size 入棧 p...

計算字串表示式的值

舉個簡單的例子,平常我們寫的數學表示式a b,就是一種中綴表示式,寫成字尾表示式就是ab 再舉乙個複雜的例子,中綴表示式 a b c a b e的逆波蘭式是ab c ab e 1 首先,需要分配1個棧,用於臨時儲存運算子,此運算子在棧內遵循越往棧頂優先順序越高的原則 2 從中綴式的左端開始逐個讀取字...