fork(2) download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. int postf(char*);
  4. int priority(char);
  5.  
  6. int main()
  7. {
  8. char in[100];
  9. scanf("%s",in);
  10. postf(in);
  11.  
  12. }
  13. int postf(char* fix) {
  14. int i = 0, top = 0;
  15. char stack[100]={'\0'};
  16. char op;
  17.  
  18. while(1) {
  19.  
  20. op=fix[i];
  21.  
  22. switch(op) {
  23. case '\0':
  24.  
  25. while(top > 0) {
  26. printf("%c", stack[top]);
  27. top--;
  28. }
  29.  
  30. printf("\n");
  31. return 0;
  32.  
  33. case '(':
  34. if(top<(sizeof(stack) / sizeof(char))) {
  35. top++;
  36. stack[top]=op;
  37. }
  38. break;
  39. case '+':
  40. case '-':
  41. case '*':
  42. case '/':
  43. while(priority(stack[top]) >= priority(op)) {
  44. printf("%c", stack[top]);
  45. top--;
  46. }
  47.  
  48. if(top < (sizeof(stack) / sizeof(char))) {
  49. top++;
  50. stack[top] = op;
  51. }
  52. break;
  53.  
  54. case ')':
  55. while(stack[top] != '(') {
  56. printf("%c",stack[top]);
  57. top--;
  58. }
  59. top--;
  60. break;
  61. default:
  62. printf("%c",op);
  63.  
  64.  
  65. break;
  66.  
  67. }
  68.  
  69. i++;
  70.  
  71.  
  72. }
  73.  
  74.  
  75. }
  76.  
  77. int priority(char op) {
  78. int a;
  79.  
  80. switch(op) {
  81.  
  82. case '+':
  83. case '-':
  84. a = 1;
  85. break;
  86.  
  87. case '*':
  88. case '/':
  89. a = 2;
  90. break;
  91.  
  92. default:
  93. a = 0;
  94. break;
  95. }
  96.  
  97. return a;
  98. }
  99.  
Success #stdin #stdout 0s 2056KB
stdin
12+12+13
A+B
stdout
1212+13+