鱼C论坛

 找回密码
 立即注册
查看: 3105|回复: 7

为什么我用小甲鱼中缀变后缀的程序用c++运行不出来

[复制链接]
发表于 2015-12-30 11:10:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//main
#include <iostream>
#include"SqStack.h"
#include"Status.h"
using namespace std;
typedef char SElemtype;
int main()
{
    SqStack S;
        SElemtype e,c;
        InitStack(S);
        cout<<"请输入中缀表达式,以 '#' 作为结尾!";
        cin>>c;
        while('#'!=c)
    {
        while('0'<= c && '9'>= c)
        {
            cout<<c;
            cin>>c;
            if(c<'0'||c>'9')
            {
                cout<<" ";
            }
        }
        if(')'==c)
        {
            Pop(S,e);
            while('('!=e)
            {
                cout<<e<<" ";
                Pop(S,e);
            }
        }
        else if('+'==c||'-'==c)
        {
            if(!StackLen(S))
            {
                Push(S,c);
            }
            else
            {
                do
                {
                     Pop(S,e);
                     if('('==e)
                     {
                         Push(S,e);
                     }
                     else
                     {
                         cout<<e<<" ";
                     }
                }while(StackLen(S) && '('!=e);
                Push(S,c);
            }
        }
        else if( '*'==c || '/'==c )
        {
                if(StackLen(S))
                {
                    Pop(S,e);
                    while('('!=e&&'+'!=e&&'-'!=e)
                    {
                        cout<<e<<" ";
                        Pop(S,e);
                    }
                    Push(S,e);
                }
                Push(S,c);
        }
        else if( '*'==c || '/'==c )
        {
                if(StackLen(s))
                {
                        Pop(&s,&e);
                        while('('!=e&&'+'!=e&&'-'!=e)
                        {
                                printf("%c ",e);
                                Pop(&s,&e);
                        }
                        Push(&s,e);
                }
                Push(&s,c);

        }
        else if('('==c)
        {
            Push(&s,c);
        }
        else if('#'==c)
        {
            break;
        }
        else
        {
            cout<<"\n输入格式错误!\n";
            return INFEASIBLE;
        }
        cin>>c;
    }
    while(StackLen(S))
    {
        Pop(S,e);
        cout<<e<<" ";
    }
    return 0;
}
//SqStack头文件
#ifndef SQSTACK_H_INCLUDED
#define SQSTACK_H_INCLUDED


#endif // SQSTACK_H_INCLUDED
#include<iostream>
using namespace std;
#include<stdlib.h>
#include "Status.h"
#define MAXSIZE 80      //栈的储存空间初始分配量
typedef char SElemtype;
typedef struct
{
    SElemtype *base;    //栈底指针
    SElemtype *top;     //栈顶指针
    int stacksize;      //最大容量
}SqStack;

Status InitStack(SqStack &S)        //栈的初始化
{
    S.base=new SElemtype[MAXSIZE];  //分配最大容量为MAXSIZE的数组空间
    if(!S.base)  exit(OVERFLOW);    //存储分配失败
    S.top=S.base;                   //初始为空栈
    S.stacksize=MAXSIZE;            //stacksize设置为栈的最大容量MAXSIZE
    return OK;
}
Status Push(SqStack &S,SElemtype e) //入栈
{
    if((S.top-S.base)==S.stacksize) //判断栈满
        return ERROR;
    else
    {
        *S.top=e;
        ++S.top;                    //栈顶指针加1
    }
    return OK;
}
Status Pop(SqStack &S,SElemtype &e)  //出栈
{
    if(S.top==S.base)               //栈空
        return ERROR;
    else
    {
        e=*S.top;
        --S.top;                    //栈顶指针减1
    }
    return OK;
}
Status StackLen(SqStack S)          //求栈长
{
    return(S.top-S.base);
}
int GotTop(SqStack S)         //取栈顶元素
{
    if(S.top!=S.base)
        return *(S.top-1);
}
void SqStackTraverse(SqStack S)//遍历
{
    SElemtype *p;
    p=S.base;
    while(S.top!=p)
    {
        cout<<*p++<<" ";
    }
    cout<<endl;
}
//Status文件
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
建立的是c++工程

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-30 17:45:05 | 显示全部楼层
代码太乱了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-30 18:08:45 | 显示全部楼层
OK,刚刚可能是我的问题。。你说用什么运行不出?vc?还是devc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-30 23:07:44 | 显示全部楼层
我叫淳子 发表于 2015-12-30 18:08
OK,刚刚可能是我的问题。。你说用什么运行不出?vc?还是devc

用的Code:Blocks
我已经解决了不过还是谢谢你
现在有个问题把中缀转后缀和逆波兰表达式结合怎么弄可不可以帮忙解决一下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-31 10:33:23 | 显示全部楼层
顺⑦zi然 发表于 2015-12-30 23:07
用的Code:Blocks
我已经解决了不过还是谢谢你
现在有个问题把中缀转后缀和逆波兰表达式结合怎么弄可不 ...

这个不懂诶。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-31 10:54:53 | 显示全部楼层

好吧 我再看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-31 11:18:04 | 显示全部楼层

你知道小甲鱼发的代码什么在哪找吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-31 12:20:10 | 显示全部楼层
顺⑦zi然 发表于 2015-12-31 11:18
你知道小甲鱼发的代码什么在哪找吗?

在论坛主页的下方,有个教学服务专区,然后课件与源代码下载,要用鱼币下,或者买vip,所有东西免费下载。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 20:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表