fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. int main() {
  7. char* src = "1 2 + 4 5 + * 3 /";
  8.  
  9. int ns[256];
  10. int ni;
  11.  
  12. char cs[16];
  13. int ci;
  14.  
  15. int i;
  16. char c;
  17. int l;
  18.  
  19. int n1;
  20. int n2;
  21.  
  22. ni = 0;
  23. ci = 0;
  24. l = strlen(src);
  25. for (i = 0; i < l; i++) {
  26. c = src[i];
  27. if (c == ' ') {
  28. if (ci > 0) {
  29. cs[ci] = '\0';
  30. ns[ni++] = atoi(cs);
  31. ci = 0;
  32. }
  33. } else if (isdigit(c)) {
  34. cs[ci++] = c;
  35. } else if (c == '+') {
  36. n2 = ns[--ni];
  37. n1 = ns[--ni];
  38. ns[ni++] = n1 + n2;
  39. } else if (c == '-') {
  40. n2 = ns[--ni];
  41. n1 = ns[--ni];
  42. ns[ni++] = n1 - n2;
  43. } else if (c == '*') {
  44. n2 = ns[--ni];
  45. n1 = ns[--ni];
  46. ns[ni++] = n1 * n2;
  47. } else if (c == '/') {
  48. n2 = ns[--ni];
  49. n1 = ns[--ni];
  50. ns[ni++] = n1 / n2;
  51. }
  52. }
  53.  
  54. printf("expression %s\n", src);
  55. if (ni > 0) {
  56. printf("result %d\n", ns[--ni]);
  57. } else {
  58. printf("result %s\n", src);
  59. }
  60.  
  61. return 0;
  62. }
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
expression 1 2 + 4 5 + * 3 /
result 9