五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

中綴

2023-06-26 10:23 作者:-永雛張飛-  | 我要投稿

#include<iostream>

#include<string>

#include<stack>

using namespace std;??

const int maxn=110;?

char priority[7][7]={?

? ? {'>','>','<','<','<','>','>'},??

? ? {'>','>','<','<','<','>','>'},??

? ? {'>','>','>','>','<','>','>'},??

? ? {'>','>','>','>','<','>','>'},??

? ? {'<','<','<','<','<','=','0'},? ?// 此行"("=")"表示左右括號相遇,括號內運算已完成?

? ? {'>','>','>','>','0','>','>'},??

? ? {'<','<','<','<','<','0','='}? ? // "=" 表示整個表達式求值完畢?

};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//? "0"表示不可能出現(xiàn)這種情況 ( 語法錯誤 )?

//Precede 用于判斷運算符棧棧頂運算符 a1 與讀入運算符 a2 之間的優(yōu)先關系函數(shù)?

char Procede(char a,char b){? ?// 建立 pre[][] 到 運算符間的映射關系?

? ? int i,j;??

? ? switch(a){??

? ? ? ? case'+':i=0;break;??

? ? ? ? case'-':i=1;break;??

? ? ? ? case'*':i=2;break;??

? ? ? ? case'/':i=3;break;??

? ? ? ? case'(':i=4;break;??

? ? ? ? case')':i=5;break;??

? ? ? ? case'#':i=6;break;? ?// # 是表達式的結束符?

? ? }??

? ? switch(b){??

? ? ? ? case'+':j=0;break;??

? ? ? ? case'-':j=1;break;??

? ? ? ? case'*':j=2;break;??

? ? ? ? case'/':j=3;break;??

? ? ? ? case'(':j=4;break;??

? ? ? ? case')':j=5;break;??

? ? ? ? case'#':j=6;break;??

? ? }??

? ? return priority[i][j];??

}

? ? ?

int Operate(int m,int n,char x){??

? ? if(x=='+')??

? ? return m+n;??

? ? if(x=='-')??

? ? return n-m;??

? ? if(x=='*')??

? ? return m*n;??

? ? if(x=='/')??

? ? return n/m;??

}??


int main(){

? ? stack <int> OPND;? // Operand stack

? ? stack <char> OPTR;? // Operator stack

OPTR.push('#');//

? ? string s;

cout<<"請輸入中綴表達式:";??

? ? cin>>s;

? ? s+="#";

? ??

? ? char c=s[0];

? ? int k=1;

? ? while(c!='#'||OPTR.top()!='#')

{? //表達式未讀完或者運算未完?

? ? ? ? int y=0;??

? ? ? ? if(c>='0'&&c<='9'){? ??

? ? ? ? ? ? while(c>='0'&&c<='9'){? // 讀入連續(xù)的數(shù)字?

? ? ? ? ? ? ? ? y=y*10+(c-'0');??

? ? ? ? ? ? ? ? c=s[k]; k++;?

? ? ? ? ? ? }??

? ? ? ? ? ? OPND.push(y);? // 把讀進的數(shù)字入數(shù)字棧?

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? switch(Procede(OPTR.top(),c))??

? ? ? ? ? ? {??

? ? ? ? ? ? ? ? case'<':? //棧頂元素優(yōu)先權低?

? ? ? ? ? ? ? ? ? ? OPTR.push(c);??

? ? ? ? ? ? ? ? ? ? c=s[k];? k++;

? ? ? ? ? ? ? ? ? ? break;??

? ? ? ? ? ? ? ? case'=':??

? ? ? ? ? ? ? ? ? ? OPTR.pop();? // 脫括號?

? ? ? ? ? ? ? ? ? ? c=s[k]; k++; // 讀入下一個字符?

? ? ? ? ? ? ? ? ? ? break;??

? ? ? ? ? ? ? ? case'>':? //退棧并將運算結果入棧?

? ? ? ? ? ? ? ? ? ? char x=OPTR.top();OPTR.pop();??

? ? ? ? ? ? ? ? ? ? int m=OPND.top();OPND.pop();??

? ? ? ? ? ? ? ? ? ? int n=OPND.top();OPND.pop();??

? ? ? ? ? ? ? ? ? ? OPND.push(Operate(m,n,x));??

? ? ? ? ? ? ? ? ? ? break;? ??

? ? ? ? ? ? }?

? ? ? ? }

? ? }

? ? cout<<"表達式的值:"<<OPND.top()<<endl;

? ? return 0;

}


中綴的評論 (共 條)

分享到微博請遵守國家法律
云南省| 大埔区| 乌拉特后旗| 武胜县| 巴楚县| 右玉县| 泌阳县| 尖扎县| 瓮安县| 潮安县| 曲阜市| 黑龙江省| 德化县| 林州市| 铜陵市| 商水县| 湖口县| 昌邑市| 弋阳县| 沽源县| 嵩明县| 潜山县| 池州市| 乌拉特后旗| 霍山县| 额尔古纳市| 安龙县| 公主岭市| 巩义市| 新和县| 绍兴市| 浮山县| 威远县| 闽侯县| 无极县| 乐陵市| 江孜县| 红桥区| 海伦市| 比如县| 金平|