Hello there,

I am trying to make a calculator program. But I have a problem with the negative sign. I fixed the program to do expression of (0-5)+12 if I want 5 to be negative. But I want and I am expecting it to do something like -5+12 .Please help...Thank you in advance

EXAMPLE OUTPUT :

Code:

Enter an infix expression:
infix: -5+12
postfix:_5_-_12_+ //'_' this sign is a space ,
error: pop empty stack //so this is wrong

but if I do this:

Code:

Enter an infix expression:
infix: 5+12
postfix:5_12_+ //'_' this sign is a space
Answer: 17 //so I succeded here

also, I have a condition:

Code:

case '-':
if ((input_string == OPERATOR) || (input_string == '\0') && (input_string== '-'))
{
return (UNARY); //a minus sign followed by a an operator or null is a unary
}
else
{
return (OPERATOR); //a minus sign after a number or right parenthesis is a subtraction
}

so that in converting infix to postfix

Code:

case UNARY:
push1(input_string[i]);
break;

and in evaluating a postfix I have in my main:

case '-':

else if ('-' == UNARY) // unary operator

{

//push2(pop2() * (0-1));

push2(pop2() * -1);

}