用的DEV C++,运行出的答案是错误的,答案中有乱码

用的DEV C++,运行出的答案是错误的,答案中有乱码

#include<iostream>
#include <stdlib.h>
using namespace std;
typedef int SElemType;
#define STACK_INIT_SIZE 100  
#define STACKINCREMENT 10 
typedef struct{
    SElemType *base;
    SElemType *top;
    int stacksize;
}SqStack;
int InitStack(SqStack &s){
    s.base=new SElemType(STACK_INIT_SIZE);
    if(!s.base) exit(0);
    s.top=s.base;
    s.stacksize=STACK_INIT_SIZE;
    return 1;
}
int Push(SqStack &s,SElemType e){
    if(s.top-s.base==s.stacksize)
        return 0;
        *s.top++=e;
        return 1;
}
int Pop(SqStack &s,SElemType &e){
    if(s.top==s.base)
        return 0;
        e=*--s.top;
        return 1;
}
SElemType GetTop(SqStack s){
    if(s.top!=s.base)
        return *(s.top-1);
    else
        return 0;
}
SElemType Precede(SElemType t1,SElemType t2){
    SElemType f;
    switch(t2)
    {
    case '+':
    case '-':
        if(t1=='('||t1=='#')
            f='<';
        else
            f='>';
        break;
    case '*':
    case '/':
        if(t1=='*'||t1=='/'||t1==')')
            f='>';
        else
            f='<';
        break;
    case '(':
        if(t1==')')
        {
            printf("ERROR1\n");
            exit(0);
        }
        else
            f='<';
        break;
    case ')':
        switch(t1)
        {
        case '(':
            f='=';
            break;
        case '#':
            printf("ERROR2\n");
            exit(0);
        default:
            f='>';
        }
        break;
    case '#':
        switch(t1)
        {
        case '#':
            f='=';
            break;
        case '(':
            printf("ERROR3\n");
            exit(0);
        default: 
            f='>';
        }
    }
    return f;
}
int In(SElemType c){
    switch(c){
        case'+':return true;
        case'-':return true;
        case'*':return true;
        case'/':return true;
        case'(':return true;
        case')':return true;
        case'#':return true;
        default:return false;
    }
}
SElemType Operate(SElemType a,SElemType theta,SElemType b){
    SElemType c;
    a=a-48;
    b=b-48;
    switch(theta){
        case'+':c=a+b+48;
            case'-':
        c=a-b+48;
        break;
        case'*':
        c=a*b+48;
        break;
        case'/':c=a/b+48;
    }
    return c;
}
char EValuateExpress(){
    SqStack OPTR,OPND;
    SElemType a,b,c,ch,theta;
    InitStack(OPND);
    InitStack(OPTR);
    Push(OPTR,'#');
    cin>>ch;
    cout<<ch; 
    while(c!='#'||GetTop(OPTR)!='#'){
        if(!In(c)) 
        {
            Push(OPND,ch);
            cin>>ch;
        }
        else
        switch(Precede(GetTop(OPTR),ch)){
            case'<':
                Push(OPTR,ch);
                cin>>ch;
                break;
            case'>':
                Pop(OPTR,theta);
                Pop(OPND,b);
                Pop(OPND,a);
                Push(OPND,Operate(a,theta,b));
                break;
            case'=':
                Pop(OPTR,ch);
                cin>>ch;
                break;
        }
        return GetTop(OPND);
    }
}
int main(){
        cout<<"请输入算术表达式,并以#结束"<<endl;
        cout<<EValuateExpress()<<endl; 
    }

m0_45128748
xiaoxiaojinglinger 回复贵阳老马马善福专业维修游泳池堵漏防水工程: 之前已采纳,望解答
6 个月之前 回复
m0_45128748
xiaoxiaojinglinger 之前已采纳,望解答
6 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 https://ask.csdn.net/questions/768205之前的回答都没有采纳呢,那还怎么回答你。
6 个月之前 回复

1个回答

m0_45128748
xiaoxiaojinglinger 谢谢,但应该不是这个问题,我把运行的删了也不行。应该是代码的问题
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问