int compute(char s[81])
sval[++valtop]=y; //y用來接收轉化的數字
i--;
} else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/') //運算子
sop[++optop]=s[i];
} else if(s[i]=='(')
else if(s[i]==')')
optop--;
} i++;
} while(optop)
return sval[valtop];
}
運算子優先順序判斷
nt level(char a) //判斷運算子的優先順序
}
計算
int cal(int x1,int x2,char op)
}
完整四則運算**
#include#include#include#define n 81
//測試(1+2)*3+2-1 括號用英文輸入
int level(char a); //比較運算子的優先順序
int cal(int x1,int x2,char op);
int compute(char s[81]);
int main(void)
int compute(char s[81])
sval[++valtop]=y; //y用來接收轉化的數字
i--;
} else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/') //運算子
sop[++optop]=s[i];
} else if(s[i]=='(')
else if(s[i]==')')
optop--;
} i++;
} while(optop)
return sval[valtop];
}int level(char a) //判斷運算子的優先順序
} int cal(int x1,int x2,char op)
}
逆波蘭表示式解決四則運算
逆波蘭表示式又叫做字尾表示式,它將複雜表示式轉換為可以依靠簡單的操作得到計算結果的表示式,解決了四則運算中括號改變運算子優先順序的問題。四則運算的表示式一般都是中綴表示式如 1 2 3 4 5,即操作符在兩個運算元之間。四則運算需要兩個步驟,一是把中綴表示式轉為字尾表示式,二是由字尾表達生成結果 c...
棧的應用 四則運算表示式(逆波蘭演算法)
基本思路 首先定義兩個棧,乙個存放數字,乙個存放符號。存放數字的棧 只有當後面的一位是符號時才入棧,這是因為如果是乙個多位數的情況。存放符號的棧 1.當符號棧為空或者是a i 不是 並且棧頂元素是 時或者符號優先順序大於棧頂元素的優先順序時入棧。2.當a i 是 並且棧頂元素是 時,彈出棧頂元素,即...
四則運算表示式 逆波蘭表示式
感覺是一塊比較偏門的東西,特此記錄下 或者叫字尾表示式,我們原先用的一直都是中綴表示式,但是因為如果表示式過長,計算機計算起來不方便。需要先遍歷一邊,找出其中的 進行優先計算,如果有多個 疊加的話就更麻煩了。於是為了計算機的方便計算,將中綴表示式轉換成字尾表示式,計算機便可以使用棧的特性,來快速的計...