簡體   English   中英

用C ++評估數學表達式

[英]Evaluating a mathematical expression in C++

在我已經研究了一段時間的編碼問題中,我進入了一個步驟,必須評估如下所示的數學表達式:

3 * 2 ^ 3 ^ 2 * 5

並且應該這樣評估:

3 * 2 ^ 3 ^ 2 * 5 = 3 * 2^(3 * 2) * 5 = 3 * 64 * 5 = 960.

在實現的當前形式中,我有兩個向量,一個向量包含作為整數的操作數,而另一個向量包含作為char的運算符。

對於當前情況,它們是: vector<int> operands = { 3, 2, 3, 2, 5 }vector<char> operators = { '*', '^', '^', '*' }

這只是一個示例情況,運算順序可能有所不同,即乘法可能並不總是要執行的第一個/最后一個運算。

我在這個特定步驟上停留了一段時間,即將兩個向量容器封裝的表達式評估為整數。 我看了一些可以在網上找到的數學解析器,但是我仍然看不到如何實施適當的評估。

一個解決方案將不勝感激。

在此處輸入圖片說明

表達式模板可以滿足您的需求 它們使按非標准順序和/或行為評估表達式成為可能-使用它們,您還可以為表達式中的同一運算符定義多種含義。

解析表達式時只需計算值,即可為最終乘積保留一個變量,為當前被乘數保留一個變量(即具有對應基數的當前指數組)。 如您所見,依次應用每個指數操作數,從而執行左聯想指數。

順便說一句,我不會費心以某種矢量化格式存儲整個表達式。 我認為沒有有用的理由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM