給定乙個合法的表示式字串,其中只包含非負整數、加法、減法以及乘法符號(不會有括號),例如7+345+2+4-3-1,請寫程式計算該表示式的結果並輸出;
輸入描述:
輸入有多行,每行是乙個表示式,輸入以end作為結束
輸出描述:
每行表示式的計算結果
輸入例子1:
7+345+2+4-3-1
2-3*1
end輸出例子1:
69-1
# include # include # include # include # include using namespace std;
//7+3*4*5+2+4-3-1
/* 思路:
加號:直接放入棧
減號:變為負數放入棧
乘號:棧頂數 * 當前數,再加入棧
除號:棧頂數 / 當前數,再加入棧
*/int main();
int len,count,n,m;
int flag,flag2;//flag2是符號狀態
while (cin.getline(s, 20001))
len = strlen(s);
flag2=2,count=0;
for (int i=0; i < len; i++)
if (flag == 0 || i == len-1)
else if(flag2 == 1) //除法 相除後放入棧
else if(flag2 == 2) //加法 直接放入棧
else if(flag2 == 3) //減法 存為負數放入棧
for(int j =0;j<4;j++) //判斷算數符號}}
int alcount=0;
while(!cal.empty())//棧內剩餘數相加
printf("%d\n",alcount);
}return 0;
}
簡單的表示式計算 c
1 include2 include3 include 4 include5 include6 include7 using namespace std 89 map char,int priority 用map來儲存運算子的優先順序 1011 int compare char a,char b 1...
表示式計算
棧的應用舉例 棧在表示式計算過程中的應用 建立運算元棧和運算子棧。運算子有優先順序。規則 自左至右掃瞄表示式,凡是遇到運算元一律進運算元棧。當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算,並將結果存入運算元棧,然後繼續...
表示式計算
表示式計算對於我們人來說,喜歡通過中綴表示式來計算,而計算機則不一樣,需要通過字尾表示式來計算,首先通過例項來介紹一下中綴表示式和字尾表示式 例子 中綴表示式 3 5 2 3 6 字尾表示式 3 5 2 3 6 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...