Start New Discussion within our Software Development Community
#include <iostream.h>
#include <stdlib.h>
template < class ItemType >
class stack {
  private :
  int top;
  int maxStk;
  ItemType  *items;
  public :
  stack();
  stack(int max);
  int isEmpty();
  int isFull();
  void push(ItemType newItm);
  int Pop(ItemType &Itm);

};
template <class ItemType>
stack <ItemType>::stack(){
top=-1;
maxStk=500;
items=new ItemType[500];
}
template <class ItemType>
stack <ItemType>::stack(int max){
maxStk =max;
top=-1;
items=new ItemType[max];
}

template <class ItemType>
int stack <ItemType>::isEmpty(){
 return (top==-1);
}
template <class ItemType>
int stack <ItemType>::isFull(){
 return (top ==maxStk-1);
}
template <class ItemType>
void stack <ItemType>::push(ItemType newItm){

	  if (isFull()){
	  cout<<"Stack is OverFlow";
	  exit(1);
	  }
	  top++;
	  items[top]=newItm;

}
template < class ItemType>
int stack <ItemType>::Pop(ItemType &item){
		if(isEmpty()){
		cout<<"Underflow";
		exit(1);
		}
		return (item=items[top]);
		top--;
}
/*void calculate(){
} */
int main(){
//calculate();
int opndstk;
int op1,op2,value;
int f;
stack <int> s;
char st[3];
for (int ie=0;ie<3;ie++){
cin>> st[ie];
st[ie]=ie;
cout<<"?\n";
}
 for(int i=0;i<3;i++){
		if (st[i]=='+'){
			op1 = s.Pop(f);
			op2 = s.Pop(f);
			value= op1+op2;


		}
		else   {
			 s.push(st[i]);
		}
		}
		cout<<value<<endl;
		//s.push(value);

}

provide Wrong answer 2 3 + =5
but it give wrong Answer why ??????

char st[3];
for (int ie=0;ie<3;ie++){
cin>> st[ie];
st[ie]=ie;
cout<<"?\n";
}
 for(int i=0;i<3;i++){
		if (st[i]=='+'){
			op1 = s.Pop(f);
			op2 = s.Pop(f);
			value= op1+op2;
 
 
		}
		else   {
			 s.push(st[i]);
		}
		}
		cout<<value<<endl;
		//s.push(value);
 
}

problem in main not provide true result

This question has already been answered. Start a new discussion instead.