簡單表示式計算

2021-09-22 02:19:56 字數 979 閱讀 2951

給定乙個合法的表示式字串,其中只包含非負整數、加法、減法以及乘法符號(不會有括號),例如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 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...