为什么会报错?求大神解决!
程序代码:
#include <bits/stdc++.h> using namespace std; int priority(char op){ if(op=='+'||op=='-') return 1; else if(op=='*'||op =='/') return 2; else return 0; } float count(int a,int b,char op){ if(op=='+') return a+b; else if(op=='-') return a-b; else if(op=='*') return a*b; else if(op=='^') return pow(a,b); else return a/b; } int main() { string s; getline(cin,s); stack<float> num_;//数字 stack<char> op_;//运算符 for (int i=0;i<s.length();i++){ if (s[i]>='0'&&s[i]<='9'){ int num=0; while(i<s.length()&&isdigit(s[i])){ num=num*10+(s[i]-'0'); i++; } i--; // num_.push(num); } else if(s[i]=='(') op_.push(s[i]); else if(s[i] == ')'){ while(!op_.empty()&&op_.top()!='(') { char op=op_.top(); op_.pop(); float b=num_.top(); num_.pop(); float a=num_.top(); num_.pop(); num_.push(count(a, b, op)); } op_.pop(); } else{ while(!op_.empty()&&priority(op_.top())>=priority(s[i])) { char op = op_.top(); op_.pop(); float b=num_.top(); num_.pop(); float a=num_.top(); num_.pop(); num_.push(count(a, b, op)); } op_.push(s[i]); } } while(!op_.empty()) { char op=op_.top(); op_.pop(); float b=num_.top(); num_.pop(); float a=num_.top(); num_.pop(); num_.push(count(a,b,op)); } printf("%f\n",&num_.top()); return 0; }