标题:为什么会报错?求大神解决!
只看楼主
Henry1559
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2023-5-13
结帖率:0
已结贴  问题点数:10 回复次数:1 
为什么会报错?求大神解决!
程序代码:
#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;
}
搜索更多相关主题的帖子: push return top float char 
2023-05-13 20:52
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:10 
倒数第3行:
printf("%f\n",&num_.top());
这里有冗余的&

会当凌绝顶,一览众山小.
2023-05-13 20:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-512191-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023591 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved