顺⑦zi然 发表于 2015-12-30 11:10:43

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

//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的数组空间
    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++工程

我叫淳子 发表于 2015-12-30 17:45:05

代码太乱了。。。

我叫淳子 发表于 2015-12-30 18:08:45

OK,刚刚可能是我的问题。。你说用什么运行不出?vc?还是devc

顺⑦zi然 发表于 2015-12-30 23:07:44

我叫淳子 发表于 2015-12-30 18:08
OK,刚刚可能是我的问题。。你说用什么运行不出?vc?还是devc

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

我叫淳子 发表于 2015-12-31 10:33:23

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

这个不懂诶。

顺⑦zi然 发表于 2015-12-31 10:54:53

我叫淳子 发表于 2015-12-31 10:33
这个不懂诶。

好吧 我再看看吧

顺⑦zi然 发表于 2015-12-31 11:18:04

顺⑦zi然 发表于 2015-12-31 10:54
好吧 我再看看吧

你知道小甲鱼发的代码什么在哪找吗?

我叫淳子 发表于 2015-12-31 12:20:10

顺⑦zi然 发表于 2015-12-31 11:18
你知道小甲鱼发的代码什么在哪找吗?

在论坛主页的下方,有个教学服务专区,然后课件与源代码下载,要用鱼币下,或者买vip,所有东西免费下载。
页: [1]
查看完整版本: 为什么我用小甲鱼中缀变后缀的程序用c++运行不出来