完整**
input
一行,乙個四則運算表示式。』*『表示乘法,』/'表示除法output輸入樣例1:
3.4輸入樣例2:
7+8.3
輸入樣例3:
3
+4.5∗(
7+2)
∗(3)
∗((3
+4)∗
(2
+3.5)/
(4+5
))−34
∗(7−
(2+3
))
3+4.5*(7+2)*(3)*((3+4)*(2+3.5)/(4+5))-34*(7-(2+3))
3+4.5∗
(7+2
)∗(3
)∗((
3+4)
∗(2+
3.5)
/(4+
5))−
34∗(
7−(2
+3))
一行,該表示式的值,保留小數點後面兩位輸出樣例1:
3.40
輸出樣例2:
15.30
輸出樣例3:
454.75
判斷左括號標頭檔案匯入判斷有括號
判斷數字,有小數需要判斷
判斷符號,計算
不斷彈出計算
會用到stack來對數字和符號進行儲存,也會用到string
#include
#include
#include
#include
using
namespace std;
定義全域性變數需要的全域性變數:用來儲存表示式的字元陣列s,儲存每乙個數字的用作中間變數字元陣列temp
符號棧opt,數字棧item
const
int maxn =
1000
;// 常量
char s[maxn]
, temp[maxn]
;// 乙個用於儲存表示式,乙個用於儲存數字從字元陣列轉化成double變數的中間變數
stack<
char
> opt;
//符號棧
stack<
double
> item;
//數字棧
主要功能函式將字元陣列轉化成數字double str2double(char s)
這個函式一般是將temp中儲存的字元陣列形式的數字轉化成double型別,考慮了小數點
double
str2double
(char s)
sum1 = sum1 *
10+ s[i]
-'0';}
if(flag)
}return sum1 + sum2;
}
運算子優先順序比較函式int priority(char ch)
int
priority
(char ch)
計算函式void cal()
void
cal(
) item.
push
(y);
opt.
pop();
}
主函式
int
main()
// 如果為數字或者小數點
else
if(s[i]
<=
'9'&& s[i]
>=
'0'|| s[i]
=='.'
)// 如果為計算符號
else
}// 這種情況,是裡面的優先順序計算順序已經調整好,直接進行計算
while
(!opt.
empty()
)cal()
;printf
("%.2lf\n"
, item.
top())
;return0;
}
#include
#include
#include
#include
using
namespace std;
const
int maxn =
1000
;char s[maxn]
, temp[maxn]
;stack<
char
> opt;
//符號棧
stack<
double
> item;
//數字棧
double
str2double
(char s)
sum1 = sum1 *
10+ s[i]
-'0';}
if(flag)
}return sum1 + sum2;
}int
priority
(char ch)
void
cal(
) item.
push
(y);
opt.
pop();
}int
main()
// 如果為數字或者小數點
else
if(s[i]
<=
'9'&& s[i]
>=
'0'|| s[i]
=='.'
)// 如果為計算符號
else
}// 這種情況,是裡面的優先順序計算順序已經調整好,直接進行計算
while
(!opt.
empty()
)cal()
;printf
("%.2lf\n"
, item.
top())
;return0;
}
四則運算表示式求值
03 四則運算表示式求值 輸入輸入為四則運算表示式,僅由陣列 四則運算符 左右括號組成,不含空格。假設運算子結果都是整數。輸出輸出這個表示式的值 分析首先我們要搞清楚表示式的定義是什麼 表示式 由乙個或者多個項組成,多個項的表示式由 連線 項 由乙個或者多個因子組成,多個因子由 連線 因子 由 表示...
四則運算表示式求值
表示式求值是關於棧的應用,涉及到中綴與字尾式的轉換,本文關於10以內不帶括號的四則運算。9 3 4 x 3 24 1 x 9 5 9 9 5 x 9 4 6 2 x 3 1 42 思路 遇到數字直接入數字棧。遇到運算子,第乙個運算子直接入符號棧,後面的需要與符號棧棧頂元素比較優先順序。若當前優先順序...
百練 四則運算表示式求值
總時間限制 1000ms 記憶體限制 65536kb 描述 求乙個可以帶括號的小學算術四則運算表示式的值 輸入一行,乙個四則運算表示式。表示乘法,表示除法 輸出一行,該表示式的值,保留小數點後面兩位 樣例輸入 輸入樣例1 3.4輸入樣例2 7 8.3 輸入樣例3 3 4.5 7 2 3 3 4 2 ...