演算法 簡單的四則運算

2021-06-30 17:00:26 字數 1220 閱讀 8812

•問題描述: 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值

注: 1、表示式只含 +, -, *, / 四則運算符,不含括號

2、表示式數值只包含個位整數(0-9),且不會出現0作為除數的情況

3、要考慮加減乘除按通常四則運算規定的計算優先順序

4、除法用整數除法,即僅保留除法運算結果的整數部分。比如8/3=2。輸入表示式保證無0作為除數情況發生

5、輸入字串一定是符合題意合法的表示式,其中只包括數字字元和四則運算符字元,除此之外不含其它任何字元,不會出現計算溢位情況

• 要求實現函式: 

int calculate(int len,char *expstr)

【輸入】 int len: 字串長度;

char *expstr: 表示式字串;

【輸出】 無

【返回】 計算結果

• 示例 

1) 輸入:char *expstr = 「1+4*5-8/3」

函式返回:19

2) 輸入:char *expstr = 「8/3*3」

函式返回:6

#include using namespace std;

int calculate(int len,char *expstr)

opstack;

opstack.top = -1;

int i=0;

int t=0; //當前字尾表示式長度

char ch = expstr[0];

while(ch!='\0')

opstack.top++;

opstack.op[opstack.top] = ch;

break;

case '*':

case '/':

while(opstack.top!=-1 && (opstack.op[opstack.top]=='*'||opstack.op[opstack.top]=='/'))

opstack.top++;

opstack.op[opstack.top] = ch;

break;

default:

expstr[t] = ch;

t++;

break;

} i++;

ch = expstr[i];

} while(opstack.top!=-1)

expstr[t] = '\0';

cout<

簡單四則運算

form1 如下 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using syst...

簡單四則運算

實現乙個簡單的四則混合運算。並且在計算100範圍以內。我實現的是兩位數之間的加減乘除混合運算,首先先定義幾個量。然後思考一下你所想要的計算方式,我在這裡就簡單的進行了數字的加減乘除,進行分為各種情況,這裡僅僅把四組的數字的混合運算一下,然後新增監聽並達到的要求。我的這個四則運算存在很多的不足,例如乘...

演算法(3)簡單四則運算

實現10以內四則運算 只包含數字,和小括號 四則運算使用 字尾表示式 演算法來計算,字尾表示式可以無需考慮運算子優先順序,直接從左至右依次計算。問題分解成2部分,一是將 中綴表示式 我們正常寫的四則運算字串樣式,即我們的輸入表示式 轉為 字尾表示式 二是使用 字尾表示式 求值。中綴表示式 轉 字尾表...