fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define STACK_MAX (100)
  4.  
  5. // prototype
  6. void res();
  7. void push(int w);
  8. int pop();
  9.  
  10. // global
  11. int st[STACK_MAX];
  12. int pt = 0;
  13. int cnt[256] = {0};
  14.  
  15. // process
  16. int main()
  17. {
  18. FILE *fp;
  19. int i;
  20. char buffer[1024];
  21. char *str;
  22.  
  23. fp = fopen("c161-102.c.in", "r");
  24. while (str = fgets(buffer, sizeof(buffer), fp)) {
  25. printf("input = %s", str);
  26. res(str);
  27. printf("result = %d\n", pop());
  28. }
  29. for ( i = 0; i < 256; ++i)
  30. if (cnt[i])
  31. printf("%c %d\n", i, cnt[i]);
  32.  
  33. return 0;
  34. }
  35.  
  36.  
  37. void res(char *str)
  38. {
  39. int a, b, i;
  40.  
  41. for (i = 0;str[i] != '\0';i++){
  42. switch (str[i]) {
  43. case '+':
  44. a=pop();
  45. b=pop();
  46. push(b+a);
  47. break;
  48. case '-':
  49. a=pop();
  50. b=pop();
  51. push(b-a);
  52. break;
  53. case '*':
  54. a=pop();
  55. b=pop();
  56. push(b*a);
  57. break;
  58. case '/':
  59. a=pop();
  60. b=pop();
  61. if (a==0)
  62. break;
  63. push(b/a);
  64. break;
  65. case ' ':
  66. case '\n':
  67. break;
  68. default:
  69. push((int)str[i]-'0');
  70. }
  71. }
  72. }
  73.  
  74. void push(int w)
  75. {
  76. st[pt++] = w;
  77. }
  78.  
  79. int pop()
  80. {
  81. return st[--pt];
  82. }
  83.  
Runtime error #stdin #stdout 0.02s 1848KB
stdin
Standard input is empty
stdout
Standard output is empty