fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int oper(int i1, int i2, char s)
  5. {
  6. if (s == '+')
  7. return (i1 + i2);
  8. else if (s == '-')
  9. return (i1 - i2);
  10. else if (s == '/')
  11. return (i1 / i2);
  12. else if (s == '*')
  13. return (i1 * i2);
  14. else if (s == '%')
  15. return (i1 % i2);
  16. return (0);
  17. }
  18.  
  19. int eval_expr(char *str)
  20. {
  21. int i;
  22. int i1;
  23. int i2;
  24. int k;
  25. int num;
  26. int op;
  27. int *n;
  28. char *o;
  29.  
  30. i = 0;
  31. while (str[i])
  32. {
  33. if (str[i] > 47 && str[i] < 58)
  34. if (str[i+1] < 48 && str[i+1] > 57)
  35. num++;
  36. if ((str[i] > 39 && str[i] < 44) || str[i] == 37 || str[i] == 45 ||
  37. str[i] == 47)
  38. op++;
  39. i++;
  40. }
  41. n = (int *)malloc(sizeof(int)*num);
  42. o = (char *)malloc(sizeof(char)*op);
  43. i = 0;
  44. i1 = -1;
  45. i2 = -1;
  46. while (str[i])
  47. {
  48. if (str[i] > 47 && str[i] < 58)
  49. {
  50. i1++;
  51. k = 0;
  52. while (str[i] > 47 && str[i] < 58)
  53. {
  54. k = k * 10;
  55. k = k + (str[i] - '0');
  56. i++;
  57. }
  58. n[i1] = k;
  59. }
  60. if (str[i] == 40)
  61. {
  62. i2++;
  63. o[i2] = str[i];
  64. }
  65. if (str[i] == 43 || str[i] == 45)
  66. {
  67. if (o[i2] != 40)
  68. {
  69. if (i1 > 0)
  70. {
  71. k = oper(n[i1 -1], n[i1], o[i2]);
  72. i1--;
  73. n[i1] = k;
  74. i2--;
  75. }
  76. }
  77. else
  78. {
  79. i2++;
  80. o[i2] = str[i];
  81. }
  82. }
  83. if (str[i] == 37 || str[i] == 42 || str[i] == 47)
  84. {
  85. if (o[i2] != 40 && o[i2] != 43 && o[i2] != 45)
  86. {
  87. if (i1 > 0)
  88. {
  89. k = oper(n[i1 -1], n[i1], o[i2]);
  90. i1--;
  91. n[i1] = k;
  92. i2--;
  93. }
  94. }
  95. else
  96. {
  97. i2++;
  98. o[i2] = str[i];
  99. }
  100. }
  101. if (str[i] == 41)
  102. {
  103. while (o[i2] != 40)
  104. {
  105. k = oper(n[i1 -1], n[i1], o[i2]);
  106. i1--;
  107. n[i1] = k;
  108. i2--;
  109. }
  110. }
  111. i++;
  112. }
  113. while (i1 != 0)
  114. {
  115. k = oper(n[i1 -1], n[i1], o[i2]);
  116. i1--;
  117. n[i1] = k;
  118. i2--;
  119. }
  120. return n[i1];
  121. }
  122.  
  123. int main()
  124. {
  125. int a = eval_expr("3 + 42 * (1 - 2 / (3 + 4) - 1 % 21) + 1");
  126. printf("%d", a);
  127. return 0;
  128. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include <stdlib.h>
^
Main.java:1: error: class, interface, or enum expected
#include <stdlib.h>
         ^
Main.java:2: error: illegal character: '#'
#include <stdio.h>
^
Main.java:8: error: class, interface, or enum expected
    else if (s == '-')
    ^
Main.java:10: error: class, interface, or enum expected
    else if (s == '/')
    ^
Main.java:12: error: class, interface, or enum expected
    else if (s == '*')
    ^
Main.java:14: error: class, interface, or enum expected
    else if (s == '%')
    ^
Main.java:16: error: class, interface, or enum expected
    return (0);
    ^
Main.java:17: error: class, interface, or enum expected
}
^
Main.java:22: error: class, interface, or enum expected
    int i1;
    ^
Main.java:23: error: class, interface, or enum expected
    int i2;
    ^
Main.java:24: error: class, interface, or enum expected
    int k;
    ^
Main.java:25: error: class, interface, or enum expected
    int num;
    ^
Main.java:26: error: class, interface, or enum expected
    int op;
    ^
Main.java:27: error: class, interface, or enum expected
    int *n;
    ^
Main.java:28: error: class, interface, or enum expected
    char *o;
    ^
Main.java:30: error: class, interface, or enum expected
    i = 0;
    ^
Main.java:31: error: class, interface, or enum expected
    while (str[i])
    ^
Main.java:36: error: class, interface, or enum expected
        if ((str[i] > 39 && str[i] < 44) || str[i] == 37 || str[i] == 45 ||
        ^
Main.java:39: error: class, interface, or enum expected
        i++;
        ^
Main.java:40: error: class, interface, or enum expected
    }
    ^
Main.java:42: error: class, interface, or enum expected
    o = (char *)malloc(sizeof(char)*op);
    ^
Main.java:43: error: class, interface, or enum expected
    i = 0;
    ^
Main.java:44: error: class, interface, or enum expected
    i1 = -1; 
    ^
Main.java:45: error: class, interface, or enum expected
    i2 = -1; 
    ^
Main.java:46: error: class, interface, or enum expected
    while (str[i])
    ^
Main.java:51: error: class, interface, or enum expected
            k = 0;
            ^
Main.java:52: error: class, interface, or enum expected
            while (str[i] > 47 && str[i] < 58) 
            ^
Main.java:55: error: class, interface, or enum expected
                k = k + (str[i] - '0');
                ^
Main.java:56: error: class, interface, or enum expected
                i++;
                ^
Main.java:57: error: class, interface, or enum expected
            }   
            ^
Main.java:59: error: class, interface, or enum expected
        }   
        ^
Main.java:63: error: class, interface, or enum expected
            o[i2] = str[i];
            ^
Main.java:64: error: class, interface, or enum expected
        }   
        ^
Main.java:72: error: class, interface, or enum expected
                    i1--;
                    ^
Main.java:73: error: class, interface, or enum expected
                    n[i1] = k;
                    ^
Main.java:74: error: class, interface, or enum expected
                    i2--;
                    ^
Main.java:75: error: class, interface, or enum expected
                }   
                ^
Main.java:80: error: class, interface, or enum expected
                o[i2] = str[i];
                ^
Main.java:81: error: class, interface, or enum expected
            }   
            ^
Main.java:90: error: class, interface, or enum expected
                    i1--;
                    ^
Main.java:91: error: class, interface, or enum expected
                    n[i1] = k;
                    ^
Main.java:92: error: class, interface, or enum expected
                    i2--;
                    ^
Main.java:93: error: class, interface, or enum expected
                }   
                ^
Main.java:98: error: class, interface, or enum expected
                o[i2] = str[i];
                ^
Main.java:99: error: class, interface, or enum expected
            }   
            ^
Main.java:106: error: class, interface, or enum expected
                i1--;
                ^
Main.java:107: error: class, interface, or enum expected
                n[i1] = k;
                ^
Main.java:108: error: class, interface, or enum expected
                i2--;
                ^
Main.java:109: error: class, interface, or enum expected
            }   
            ^
Main.java:112: error: class, interface, or enum expected
    }   
    ^
Main.java:116: error: class, interface, or enum expected
        i1--;
        ^
Main.java:117: error: class, interface, or enum expected
        n[i1] = k;
        ^
Main.java:118: error: class, interface, or enum expected
        i2--;
        ^
Main.java:119: error: class, interface, or enum expected
    }   
    ^
Main.java:121: error: class, interface, or enum expected
}
^
Main.java:126: error: class, interface, or enum expected
    printf("%d", a); 
    ^
Main.java:127: error: class, interface, or enum expected
    return 0;
    ^
Main.java:128: error: class, interface, or enum expected
}
^
59 errors
stdout
Standard output is empty