#include
#include
using namespace std;
double getnumber(char*&p)
while(*p)
else
if(*p=='.')
else
break;}}
else
break;
}if(!falg)
return -(num+fnum);
return num+fnum;
}//這個函式讓p指向了下乙個
bool issign(char*&p,double&num)
else
return true;//返回的p指向當前的運算符號
}//利用這個計算
double complicate(double a,double b,char*p)
}//利用這個判斷兩個符號的優先級別
bool chose(char la,char rb)
//利用上面這個計算,當我們計算條件:遇到『)』或者p為空且符號陣列不為空時
//則呼叫下面這個函式
//作用,只進行一次括號內運算或者空
void complicateex(vector&sv,vector&nv)
else
if(chose(la,rb))//返回真,左邊為合適的
else//返回false,右邊為合適的,所以押回左邊
}else
p=rb;//假如不存在前一字元
///存在兩個字元情況,假如為la,則要彈出三個,假如是rb或者『(』則只用彈出兩個
double b=nv.back();
nv.pop_back();
double a=nv.back();
nv.pop_back();
double c;
if(!falg)
double num=complicate(a,b,&p);
nv.push_back(num);
if(!falg)}}
}//封裝乙個壓入函式
void push(char*&p,vector&sv,vector&nv)
else
if(issign(p,num))
else
nv.push_back(num);
}void main()
cout<}
含括號的四則運算
總體思路 需要用到棧,從中綴表示式到字尾表示式,再把字尾表示式轉化為結果,比如計算9 3 1 5 4 2,這個式子就叫做中綴表示式,然後我們需要把它轉化成字尾表答式,方法 將中綴表示式從左到右讀取,如果是數字,直接輸出到字尾表示式,如果是字元,則如果是右括號,把從棧頂開始到棧中左括號的字元輸出到字尾...
帶括號的四則運算
帶括號的四則運算 public class caculatordemo 帶括號的四則運算 param exp return public static double calckuohao string exp else 不帶括號的四則運算 param exp return public static...
C C 帶括號四則運算
1 首先從string讀入表示式,取出每乙個字元後裝入deque容器coll1中 原始碼在後面 2 從該容器取出每乙個元素,利用棧將中綴表示式轉換成字尾表示式 可參考 將字尾表示式裝入容器coll3中。3 最後從coll3中取出元素逐一處理,既使用逆波蘭式求值 如下圖 c 原始碼 可編譯並正常執行,...