棧問題2(四則運算)

2021-07-27 12:47:06 字數 1020 閱讀 9513

利用棧實現形如 a+b*c+(d*e+f)*g 的運算

先從中綴式轉為字尾式 然後再計算 可輸入空格

#include

#include

#include

using

namespace

std;

//a+b*c+(d*e+f)*g

//1+1*1+(2*1+1)*2 = 8

//3 + 5 * 1 + ( 2 * 0 + 1 ) * 1 = 9

//20+3*6+(1+1)*9 = 56

int main()

; stack

st;

stack

sum;

char s[50],o[50]; //s存放輸入 o存放操作符

int num[50]; //儲存數字

int nc, oc; //nc數字數量 oc操作符數量

while(gets_s(s))

else

if (s[i] == '*' || s[i] == '/')

else

}else

if (s[i] == '+' || s[i] == '-')

st.push(s[i]);

}else

//s[i] == ')'

st.pop(); // pop ')'}}

else

}while (!st.empty())

}for (int i = 0, j = 0; i < nc; i++)

cout

<< endl;

//計算字尾式

bool flag = true;

for (int i = 0, j=0; i < nc; i++)

else

j++;

sum.push(s1);}}

if(flag)

cout

<< sum.top() << endl;

}}

四則運算2

題目 輸出算術題。1 題目避免重複 2 可定製 數量 列印方式 3 可以控制下列引數 是否有乘除法 數值範圍 加減有無負數 除法有無餘數 是否支援分數 真分數,假分數,程式設計思想 1 首先允許使用者輸入每頁顯示的題目數量以及要輸出幾頁,提供選擇列印方式的選項 2 然後提供下列選項 提供分數運算 分...

四則運算2

一 要求 1 題目避免重複 2 可定製 數量 列印方式 3 可以控制下列引數 1 是否有乘除法 2 是否有括號 最多可以支援十個數參與計算 3 數值範圍 4 加減有無負數 5 除法有無餘 二 設計思路 1 為了避免題目重複,定義了三個陣列用來分別存放第一,二個數和符號,用if條件語句判斷是否重複 2...

四則運算 2

實驗報告 思路 是否有乘除法 數值範圍 加減有無負數 除法有無餘數。利用for迴圈設定題目的數量,用三個陣列分別表示兩個隨機數和他們之間的四則運算,利用跟之前的題目進行比較,避免出現重複的題目。利用if語句對引數進行分類,如果有乘除法,四則運算的陣列就有四個元素,反之只有兩個元素。命令a是題目的取值...