Advertisement
pseudocreator

Reverse Polish Notation Calculator

Jun 30th, 2014
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #define MAXOP 100
  4. #define NUMBER '0'
  5.  
  6. int getop(char[]);
  7. void push(double);
  8. double pop(void);
  9. /* RPN reverse polish notation calculator*/
  10. //pseudo code, not done yet
  11.  
  12. main(){
  13.     int type;
  14.     double op2;
  15.     char s[MAXOP];
  16.     while((type=getop(s))!=EOF){
  17.         switch(type){
  18.             case NUMBER:
  19.                 push(atof(s));
  20.                 break;
  21.             case '+':
  22.                 push(pop()+pop());
  23.                 break;
  24.             case '*':
  25.                 push(pop()*pop());
  26.                 break;
  27.             case '-':
  28.                 op2=pop();
  29.                 push(pop()-op2);
  30.                 break;
  31.             case '/':
  32.                 op2-pop();
  33.                 if(op2!=0.0)
  34.                     push(pop()/op2);
  35.                 else
  36.                     printf("greska, deljenje nulom\n");
  37.                 break;
  38.             case '\n':
  39.                 printf("|t%.8g\n", pop());
  40.                 break();
  41.             default:
  42.                 printf("greska, nepoznata operacija %s\n", s);
  43.             break;
  44.         }
  45.     }
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement