| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 351 人关注过本帖
标题:请教!
只看楼主 加入收藏
shujujiegou1
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-10-10
结帖率:0
收藏
 问题点数:0 回复次数:1 
请教!
我想实现一个将中缀表达式转化为后缀表达式的程序,请问这是错在哪了??
#include "stdafx.h"
#include<stack>
#include<iostream>
#include<string>
using namespace std;

int main()
{
    stack<char> op;
    string s;
    cout<<"请输入表达式: ";
    cin>>s;
    istringstream in(s);
    char c;
    while(in>>c)
    {
        if(c=='+'||c=='-'||c=='*'||c=='/')
            op.push(c);
        else if(c==')')
        {
            cout<<op.top()<<" ";
            op.pop();
        }
        else if(c>='0'&&c<='9')
        {
            in.putback(c);
            int n;
            cin>>n;
            cout<<n<<" ";
        }
    }
    while(!op.empty())
    cout<<op.pop()<<endl;
    return 0;
}
搜索更多相关主题的帖子: 表达式 include 
2012-10-14 12:17
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
大概的调试了一下程序,调出来一大堆错误.....首先你没有加头文件sstream
主要错误在于op.pop()(并没有返回值),
它的意思是删除栈顶元素,
你得用op.top()...它返回来的才是栈顶元素....修改后的代码:
程序代码:
#include<sstream>
#include<string>
#include<iterator>
using namespace std;
int main()
{
    stack<char> op;
    string s;
    cout<<"请输入表达式: ";
    cin>>s;
    istringstream in(s);
    char c;
    while(in>>c)
    {
        if(c=='+'||c=='-'||c=='*'||c=='/')
            op.push(c);
        else if(c==')')
        {
            cout<<op.top()<<" ";
            op.pop();
        }
        else if(c>='0'&&c<='9')
        {
            in.putback(c);
            int n;
            cin>>n;
            cout<<n<<" ";
        }
    }
       
     while(!op.empty())
     {
       cout<<op.top()<<endl;
       op.top();
      }
    return 0;
}


[ 本帖最后由 爱闹的娃 于 2012-10-14 21:59 编辑 ]
2012-10-14 21:33
快速回复:请教!
数据加载中...
 
   



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

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