Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <iostream>
- #include <stack>
- using namespace std;
- int main()
- {
- char postfix[100] = {'\0'};
- int Digit1[20], Digit2[20];
- int i=0,j=0,k=0,var1=0,var2=0,result=0,Count1=0,Count2=0,p=1,x=0,Count3=0;
- cout << "Input Postfix Expression: ";
- gets(postfix);
- cout << "Input expression is..." <<endl;
- puts(postfix);
- stack <int> myStack;
- for(i=0;postfix[i] != '\0'; i++)
- {
- if(postfix[i]==',')
- {
- Count3++;
- }
- }
- for(i=0; postfix[i]!='\0'; i++)
- {
- if (postfix[i] != '+' && postfix[i] != '-' && postfix[i] != '*' && postfix[i] != '/')
- {
- if(postfix[i] != ',')
- {
- myStack.push(postfix[i]-'0');
- }
- else
- {
- myStack.push(postfix[i]);
- }
- }
- else
- {
- if(myStack.top()==',')
- {
- myStack.pop();
- }
- var1 =0;
- Count1=0;
- if(myStack.top()>9)
- {
- var1= myStack.top();
- myStack.pop();
- x=1;
- }
- else
- {
- for(j=0; myStack.top() != ','; j++)
- {
- Digit1[j] = myStack.top();
- myStack.pop();
- Count1++;
- }
- p=1;
- for(j=0; j<Count1; j++)
- {
- var1 = var1 +(Digit1[j] * p);
- p = p*10;
- }
- }
- if(myStack.top()==',')
- {
- myStack.pop();
- }
- var2=0;
- Count2=0;
- if(Count3>2)
- {
- if(x==1)
- {
- for(k=0; !myStack.empty(); k++)
- {
- Digit2[k] = myStack.top();
- if(!myStack.empty())
- {
- myStack.pop();
- }
- Count2++;
- }
- }
- else
- {
- for(k=0; myStack.top() != ',' && !myStack.empty(); k++)
- {
- Digit2[k] = myStack.top();
- if(!myStack.empty())
- {
- myStack.pop();
- }
- Count2++;
- }
- }
- }
- else
- {
- for(k=0; !myStack.empty(); k++)
- {
- Digit2[k] = myStack.top();
- if(!myStack.empty())
- {
- myStack.pop();
- }
- Count2++;
- }
- }
- p=1;
- for(k=0; k<Count2; k++)
- {
- var2 = var2 +(Digit2[k] * p);
- p = p*10;
- }
- if(postfix[i] == '+')
- {
- result = var1 + var2;
- myStack.push(result);
- result = 0;
- }
- else if(postfix[i] == '-')
- {
- result = var2 - var1;
- myStack.push(result);
- result = 0;
- }
- else if(postfix[i] == '*')
- {
- result = var1 * var2;
- myStack.push(result);
- result = 0;
- }
- else if(postfix[i] == '/')
- {
- result = var2 / var1;
- myStack.push(result);
- result = 0;
- }
- }
- }
- result = myStack.top();
- cout << "\n" << "Result is: " << result << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment