文章

15

粉丝

39

获赞

137

访问

5.6k

头像
计算表达式 先构造出后缀表达式,再计算后缀表达式

//10:38
//1281-计算表达式 
#include<bits/stdc++.h>
using namespace std;
int charToint(char c[100],int n){
	int s=0;
//	cout<<"c="<<c[0]-'0'<<endl;
	for(int i=0;i<=n;i++){
		s=s*10+c[i]-'0';
//		cout<<"s="<<s<<endl;
	}	
	return s;
}
bool judge(char a,char b){             //卡顿点:运算符的问题:只要当前入栈符号优先级不大于栈顶符号 
//	string s="+-*/";                      //就让栈顶符号出栈,这与带括号的运算规则不太一样 
//	if(s.find(a)>=s.find(b)) return true;
	map<char,int> mp;
	mp['+']=1;
	mp['-']=1;
	mp['*']=2;
	mp['/']=2;
	if(mp[b]>mp[a]) return false;
	else return true;
}

int calpost(int b[100],int n,int f[100]){
	stack<int> s;
	int ans;
	for(int i=0;i<n;i++){
		if(f[i]==0) s.push(b[i]);
		else{
			int num1=s.top();
			s.pop();
			int num2=s.top();
			s.pop();
			int r;
			if(b[i]=='/' )  r=(num2)/(num1);
			else if(b[i]=='*' )  r=(num2)*(num1);
			else if(b[i]=='+')  r=(num2)+(num1);
			else if(b[i]=='-')  r=(num2)-(num1);
		...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发