c++实现四则运算,为什么会没有输出呢


#include <iostream>
using namespace std;

char a[7][7] = {
{'>','>','<','<','<','>','>'},
{'>','>','<','<','<','>','>'},
{'>','>','>','>','<','>','>'},
{'>','>','>','>','<','>','>'},
{'<','<','<','<','<','=',' '},
{'>','>','>','>',' ','>','>'},
{'<','<','<','<','<',' ','='}
};
char fh[7] = { '+','-','*','/','(',')','#' };
class Zhan1  //符号
{
public:
    char data[100];
    int top;
    Zhan1() { top = -1; }
    char Gettop()  //获取符号栈栈顶元素
    {
        return data[top];
    }
    void Push(char x)   //符号栈进栈
    {
        top++;
        data[top] = x;
    }
    char Pop(char x)          //符号栈出栈
    {
        x = data[top--];
        return x;
    }
};


class Zhan2  //数字
{
public:
    char data[100];
    int top;
    Zhan2() { top = -1; }
    double Gettop()  //获取数字栈栈顶元素
    {
        return data[top];
    }
    void Push(char x)   //数字栈进栈
    {
        top++;
        data[top] = x;
    }
    char Pop(char x)          //数字栈出栈
    {
        x = data[top--];
        return x;
    }
};

char Ysj(char c1, char c2)   //优先级比较
{
    int i=0, j=0;
    switch (c1)
    {
    case'+':i = 0;
        break;
    case'-':i = 1;
        break;
    case'*':i = 2;
        break;
    case'/':i = 3;
        break;
    case'(':i = 4;
        break;
    case')':i = 5;
        break;
    case'#':i = 6;
        break;
    }
    switch (c2)
    {
    case'+':j = 0;
        break;
    case'-':j = 1;
        break;
    case'*':j = 2;
        break;
    case'/':j = 3;
        break;
    case'(':j = 4;
        break;
    case')':j = 5;
        break;
    case'#':j = 6;
        break;
    }
    return a[i][j];
}


int Sfshu(char c)   //判断c是否为操作数
{
    if (c >= '0' && c <= '9')
    {
        return 1;
    }
    else return 0;
}

float Js(char a, char y , char b )   //计算Z=xAy
{
    
    char n='0';
    char i, j;
    i = a - '0';
    j = b - '0';
    switch (y)
    {
    case'+':n = (i + j) + '0'; break;
    case'-':n = (i - j) + '0'; break;
    case'*':n = (i * j) + '0'; break;
    case'/':n = (i / j) + '0'; break;
    }
    return n;
}

void Sc()
{
    char a, b, c, x, y;
    Zhan1 z1;  //符号栈
    Zhan2 z2;  //数字栈
    cin >> c;
    while (c!='#'||z1.top != '#')
    {
        if (Sfshu(c)==1)
        {
            z2.Push(c);
        }
        else
        {
            switch (Ysj(z1.Gettop(), c))
            {
            case'<':
                z1.Push(c);
                break;
            case'=':
                z1.Pop(x = c);
                break;
            case'>':
                z2.Pop(a = c);
                z1.Pop(y = c);
                z2.Pop(b = c);
                z2.Push(Js(a, y, b));
                break;
            }
        }
    }
    cout << z2.Gettop() - '0' << endl;
}

int main()
{
    Sc();
    return 0;
}

img