四則運算主要分為兩個部分:
中綴轉字尾
規則為:先遍歷中綴表示式的每乙個字元,如果是數字直接輸出到字尾表示式,如果是符號,需要判斷與棧頂符號的優先順序,是右括號或者優先順序高於棧頂符號(乘除優先於加減)則依次輸出出棧並輸出,然後將當前符號壓入棧。這裡把符號分為幾類:①』(』,入棧;
②』)』,棧頂符號依次出棧並輸出直到棧頂元素為』(』,然後將當前符號入棧;
③』+』or』-『,棧頂符號依次出棧直到棧為空或者棧頂元為』(』,然後把當前符號壓入棧。
④』』 or 『/』, 為棧頂符號為』『或』/』的元素依次出棧,直到遇到其他符號或者棧為空,然後把當前符號壓棧。
最後將棧中剩餘分符號輸出。
字尾表示式計算string backtomid(string s)
else
stk.pop();
break;
case
'+':
case
'-':
while( !stk.empty() && stk.top() != '(')
stk.push(s[i]);
break;
case
'*':
case
'/':
while( !stk.empty() && ( stk.top() == '*' || stk.top() == '/' ))
stk.push(s[i]);
break;}}
}while(!stk.empty())
return ret;
}
規則:遍歷字尾表示式,如果是數字直接入棧,如果是符號,將棧頂的兩個元素取出,進行相應的運算,將得到的運算結果重新壓入棧,最後棧頂的元素即為最終計算結果。
可參考:float caculate(string s)
i++; //跳過運算元後面的空格符
stk.push(k);
}else
stk.push(temp);}}
result = stk.top();
return result;
}
棧應用 四則運算
輸入字串格式的算術表示式,如 3 2 輸出去結果。棧的應用 四則運算分為下列四個過程 讀取字串 並不是簡單地讀入,比如 當字串中有兩位數,例如12時,我們應該讀成 12 而不是 1 2 不然運算會出現錯誤 處理字串,給字串加0 為了保證字尾運算的正常執行,需要對出現的負數進行考慮。例如 4 3 為了...
棧的應用 簡單四則運算
思想 我們平時輸入的四則運算表示式,例如 9 3 1 2,屬於中綴表示式。我們需要將它轉換成字尾表示式 9 3 1 2 的形式求值。其中需要兩個棧 數字棧和運算子棧。過程 逐個讀取中綴表示式 char型 9 3 1 2 1.如果是數字則壓入數字棧 如果是大於一位的數字則需要寫個函式轉換成int型 2...
棧的實際應用 四則運算
四則運算 計算機在進行運算過程會先將中綴轉成字尾進行計算。中綴表示式 9 6 3 8 4 字尾表示式 96 3 84 中綴轉字尾規則 借助輔助棧,遇到數字或字母,列印 遇到符號,將當前符號與棧頂符號進行優先順序比較。如果當前符號優先順序高,則直接入棧,如果當前符號優先順序較低,則將棧頂元素依次出棧,...