實現了加減乘除運算(沒有使用stl)
1.乙個資料棧,乙個符號棧
2.優先順序判斷
3.負號和減號的判別與處理
4.括號匹配
**如下:
#include#include#include/*1、建立棧類,採用陣列描述;
2、計算數學表示式的值。
輸入數學表示式,輸出表示式的計算結果。數學表示式由單個數字和
運算子「+」、「-」、「*」、「/」、「(」、「) 」構成,例如 2+3*(4+5)–6/4。
假定表示式輸入格式合法。
選做:*3、以乙個 m*n 的長方陣表示迷宮,0 和 1 分別表示迷宮中的通路和障礙。
設計乙個程式,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。
迷宮根據乙個迷宮資料檔案建立。迷宮資料檔案由乙個包含 0、1 的矩陣
組成。迷宮的通路可以使用通路上各點的座標序列進行展示(使用圖形展示最佳)。*/
using namespace std;
templateclass mystack
~mystack()//析構函式
bool empty()//判斷棧是否為空
int size()//返回棧中元素個數
t & top()//返回棧頂元素
if(flag)
n.push(k); //將讀入的數字壓到數字棧
} else
switch(s[i])
break;
case '*':
case '/':
if(c.empty()||c.top()=='(') c.push(s[i]);//如果符號棧為空或者棧頂元素為(,*/直接壓入棧
else if(c.top()=='+'||c.top()=='-') c.push(s[i]);//如果前乙個運算子為+或-,*/直接壓入棧
else if(c.top()=='*'||c.top()=='/')
break;
case '('://左括號直接入棧
c.push(s[i]);
break;
case ')'://遇到右括號 ,對括號內運算直至運算到左括號
while (c.top()!='(')
c.pop();//將左括號彈出棧
break;
default:break;
}} }
cout<<"計算所得的結果是:";
while(!c.empty()) calculate(n,c);
cout<>s; //輸入表示式
length=s.length();
operate(s,length);
} return 0;
}
利用棧實現簡易計算器
輸入數學表示式,輸出結果。其中符號支援加減乘除 乘方及括號,數字支援小數及負數。開兩個陣列,乙個陣列為符號棧,乙個陣列為數字棧。字串讀入表示式並逐位處理,有數字就擷取下來存入數字棧,運算符號截下來存入符號棧,若發現當前符號優先順序小於等於前乙個符號的優先順序,就要把前面那部分的值計算出來,例如3 2...
棧實現簡易計算器
計算數學表示式的值。輸入數學表示式,輸出表示式的計算結果。數學表示式由單個數字和運算子 構成,例如 2 3 4 5 6 4。include include include include using namespace std double result int tag template class...
實現乙個計算器
一直以來,我都想寫一門語言,但無從下手。我找到了很多編譯原理的教程,但始終覺得內容晦澀,理解不了,所以先嘗試寫乙個簡單的,比如 計算器。網上有很多關於計算器的實現,但大多需要有編譯原理的基礎,對於我這種小白實在難以理解。我決定採用暴力模擬的方式,需要用正規表示式,但我不想自己實現,所以用js。計算器...