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