I need to sum up or multiplie(it depends on which operation i push in array) first two numbers in stack. If I push operation + and my first two numbers are one and two then my stack value where I pushed + must be 3 , but in my result i get some symbol.
    #include<iostream>
    using namespace std;
    #define MAX 10
    int sp=-1;
    char stack[MAX];
    void push(){
        if(sp==MAX-1){
            cout<<"Error: stack overflow"<<endl;
            return;
        }
        else{
            char x;
            cout<<"Insert value in stack: ";
            cin>>x;
            if(x=='*'){
                if(sp>=1){
                    stack[++sp]=stack[1]*stack[0];
                    return;
                }
                else {
                    stack[++sp]=x;
                    return;
                }
            }
            else if(x=='+'){
                if(sp>=1){
                    stack[++sp]=stack[0]+stack[1];
                    return;
                }
                else {
                    stack[++sp]=x;
                    return;
                }   
            }
            else stack[++sp]=x;
        }
    }
    void pop(){
        if(sp==-1){
            cout<<"Error: Stack empty";
            return;
        }
        else{
            cout<<stack[sp]<<endl;
            sp--;
        }
    }
    void top(){
        if(sp==-1){
            cout<<"Error: Stack empty";
            return;
        }
        else{
            cout<<stack[sp]<<endl;
        }
    }
    void isEmpty(){
        if(sp==-1){
            cout<<"Stack is empty"<<endl;
            return;
        }
        else{
            cout<<"Stack is not empty"<<endl;
        }
    }
    int main(){
        for(int i=0;i<8;i++){
            push();
        }
        top();
        return 0;
    }
Original stack: 3 4 3 + 1 2 * * Stack that I need to get: 3 4 3 7 1 2 12 12 Stack that I get: 3 4 3 \ 1 2 _ _ (let's say something like that)