計算公式 四則運算實現

2021-10-17 03:32:56 字數 1235 閱讀 3504

要對公式進行運算,首先需要實現基礎的四則運算(包含符號()+-*/),用於解析乙個字串的計算式子(如:'(6+2)/4-2')。演算法思路如下:

中綴表示式是利於人理解的表達方式,而字尾表示式更方便計算機的運算。

(或中綴記法)是乙個通用的算術或邏輯公式表示方法, 操作符是以中綴形式處於運算元的中間(例:3 + 4),中綴表示式是人們常用的算術表示方法。

與字首表示式(例:+ 3 4)或字尾表示式(例:3 4 +)相比,中綴表示式不容易被計算機解析,但仍被許多程式語言使用,因為它符合人們的普遍用法。

與字首或字尾記法不同的是,中綴記法中括號是必需的。計算過程中必須用括號將操作符和對應的運算元括起來,用於指示運算的次序。

例:(1)8+4-6*2用字尾表示式表示為:8 4+6 2*-

(2)2*(3+5)+7/1-4用字尾表示式表示為:235+*71/+4-

所以首先將中綴表示式轉換成字尾表示式。這個過程需要乙個輔助處理的棧,從左到右掃瞄表示式裡的每乙個字元,執行以下操作:

遍歷完成後,將輔助棧中的元素輸出,則得到字尾表示式。

說明:操作符優先順序為: () <  +- <  */

以a*(b-c)/d為例,處理過程如下:

// 如果輸入結束,將棧內元素全部彈出,加入字尾表示式中

while (!postfixhelper.empty())

}計算字尾表示式,同樣需要乙個輔助處理的棧,從左到右遍歷字元,遇到運算元壓入輔助棧中;遇到操作符則從棧頂取出兩個元素,第乙個為右運算數,第二個為左運算數(注意這個順序在除法中是結果相關的)。運算後的結果入棧。遍歷完成後,輔助棧頂的元素則為所求。

// 計算字尾表示式

function calcpostfix(postfix, data) else else }}

}return helperstack.top()

}

實現四則運算

總結最近在看資料結構,遇到第乙個實際棧的應用,記錄 將平時的四則運算表示式又稱為中綴表示式轉化為字尾表示式。遇數字輸出,遇符號進棧,符號優先順序低於棧當前符號則輸出,輸出直到同等優先順序符號。例 9 3 1 2 輸出 棧 9 in 9 in 9 3 9 3 in 9 3 1 9 3 1 in 右括號...

python四則運算程式 四則運算(Python)

四則運算程式 一 資訊 二.題目要求 寫乙個能自動生成小學四則運算題目的程式,然後在此基礎上擴充套件 除了整數以外,還要支援真分數的四則運算,例如 1 6 1 8 7 24 程式要求能處理使用者的輸入,判斷對錯,累積分數 程式支援可以由使用者自行選擇加 減 乘 除運算 三 import random...

四則運算的實現

繼續溫習資料結構.實現用到了兩個棧 運算元棧與操作符棧。主要過程是將中序表示式轉換為後續表示式,然後按順序進行運算。簡單過程 1 8 7 中序 1 8 7 後序 1 1 運算8 7 2 運算1 1 原始碼 include stack.h 利用到了前一篇文章實現的棧 define size 256 d...