利用棧實現形如 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是題目的取值...