#include <stdlib.h>
#include <stdio.h>
int oper(int i1, int i2, char s)
{
if (s == '+')
return (i1 + i2);
else if (s == '-')
return (i1 - i2);
else if (s == '/')
return (i1 / i2);
else if (s == '*')
return (i1 * i2);
else if (s == '%')
return (i1 % i2);
return (0);
}
int eval_expr(char *str)
{
int i;
int i1;
int i2;
int k;
int num;
int op;
int *n;
char *o;
i = 0;
while (str[i])
{
if (str[i] > 47 && str[i] < 58)
if (str[i+1] < 48 && str[i+1] > 57)
num++;
if ((str[i] > 39 && str[i] < 44) || str[i] == 37 || str[i] == 45 ||
str[i] == 47)
op++;
i++;
}
n = (int *)malloc(sizeof(int)*num);
o = (char *)malloc(sizeof(char)*op);
i = 0;
i1 = -1;
i2 = -1;
while (str[i])
{
if (str[i] > 47 && str[i] < 58)
{
i1++;
k = 0;
while (str[i] > 47 && str[i] < 58)
{
k = k * 10;
k = k + (str[i] - '0');
i++;
}
n[i1] = k;
}
if (str[i] == 40)
{
i2++;
o[i2] = str[i];
}
if (str[i] == 43 || str[i] == 45)
{
if (o[i2] != 40)
{
if (i1 > 0)
{
k = oper(n[i1 -1], n[i1], o[i2]);
i1--;
n[i1] = k;
i2--;
}
}
else
{
i2++;
o[i2] = str[i];
}
}
if (str[i] == 37 || str[i] == 42 || str[i] == 47)
{
if (o[i2] != 40 && o[i2] != 43 && o[i2] != 45)
{
if (i1 > 0)
{
k = oper(n[i1 -1], n[i1], o[i2]);
i1--;
n[i1] = k;
i2--;
}
}
else
{
i2++;
o[i2] = str[i];
}
}
if (str[i] == 41)
{
while (o[i2] != 40)
{
k = oper(n[i1 -1], n[i1], o[i2]);
i1--;
n[i1] = k;
i2--;
}
}
i++;
}
while (i1 != 0)
{
k = oper(n[i1 -1], n[i1], o[i2]);
i1--;
n[i1] = k;
i2--;
}
return n[i1];
}
int main()
{
int a = eval_expr("3 + 42 * (1 - 2 / (3 + 4) - 1 % 21) + 1");
printf("%d", a);
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBvcGVyKGludCBpMSwgaW50IGkyLCBjaGFyIHMpCnsgICAgICAgCiAgICBpZiAocyA9PSAnKycpCiAgICAgICAgcmV0dXJuIChpMSArIGkyKTsKICAgIGVsc2UgaWYgKHMgPT0gJy0nKQogICAgICAgIHJldHVybiAoaTEgLSBpMik7CiAgICBlbHNlIGlmIChzID09ICcvJykKICAgICAgICByZXR1cm4gKGkxIC8gaTIpOwogICAgZWxzZSBpZiAocyA9PSAnKicpCiAgICAgICAgcmV0dXJuIChpMSAqIGkyKTsKICAgIGVsc2UgaWYgKHMgPT0gJyUnKQogICAgICAgIHJldHVybiAoaTEgJSBpMik7CiAgICByZXR1cm4gKDApOwp9CgppbnQgZXZhbF9leHByKGNoYXIgKnN0cikKewogICAgaW50IGk7CiAgICBpbnQgaTE7CiAgICBpbnQgaTI7CiAgICBpbnQgazsKICAgIGludCBudW07CiAgICBpbnQgb3A7CiAgICBpbnQgKm47CiAgICBjaGFyICpvOwoKICAgIGkgPSAwOwogICAgd2hpbGUgKHN0cltpXSkKICAgIHsKICAgICAgICBpZiAoc3RyW2ldID4gNDcgJiYgc3RyW2ldIDwgNTgpCiAgICAgICAgICAgIGlmIChzdHJbaSsxXSA8IDQ4ICYmIHN0cltpKzFdID4gNTcpCiAgICAgICAgICAgICAgICBudW0rKzsKICAgICAgICBpZiAoKHN0cltpXSA+IDM5ICYmIHN0cltpXSA8IDQ0KSB8fCBzdHJbaV0gPT0gMzcgfHwgc3RyW2ldID09IDQ1IHx8CiAgICAgICAgICAgICAgICBzdHJbaV0gPT0gNDcpCiAgICAgICAgICAgIG9wKys7CiAgICAgICAgaSsrOwogICAgfQogICAgbiA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkqbnVtKTsKICAgIG8gPSAoY2hhciAqKW1hbGxvYyhzaXplb2YoY2hhcikqb3ApOwogICAgaSA9IDA7CiAgICBpMSA9IC0xOyAKICAgIGkyID0gLTE7IAogICAgd2hpbGUgKHN0cltpXSkKICAgIHsgICAKICAgICAgICBpZiAoc3RyW2ldID4gNDcgJiYgc3RyW2ldIDwgNTgpIAogICAgICAgIHsgICAKICAgICAgICAgICAgaTErKzsKICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgIHdoaWxlIChzdHJbaV0gPiA0NyAmJiBzdHJbaV0gPCA1OCkgCiAgICAgICAgICAgIHsgICAKICAgICAgICAgICAgICAgIGsgPSBrICogMTA7IAogICAgICAgICAgICAgICAgayA9IGsgKyAoc3RyW2ldIC0gJzAnKTsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfSAgIAogICAgICAgICAgICBuW2kxXSA9IGs7CiAgICAgICAgfSAgIAogICAgICAgIGlmIChzdHJbaV0gPT0gNDApIAogICAgICAgIHsgICAKICAgICAgICAgICAgaTIrKzsKICAgICAgICAgICAgb1tpMl0gPSBzdHJbaV07CiAgICAgICAgfSAgIAogICAgICAgIGlmIChzdHJbaV0gPT0gNDMgfHwgc3RyW2ldID09IDQ1KSAKICAgICAgICB7ICAgCiAgICAgICAgICAgIGlmIChvW2kyXSAhPSA0MCkgCiAgICAgICAgICAgIHsgICAKICAgICAgICAgICAgICAgIGlmIChpMSA+IDApCiAgICAgICAgICAgICAgICB7ICAgCiAgICAgICAgICAgICAgICAgICAgayA9IG9wZXIobltpMSAtMV0sIG5baTFdLCBvW2kyXSk7CiAgICAgICAgICAgICAgICAgICAgaTEtLTsKICAgICAgICAgICAgICAgICAgICBuW2kxXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgaTItLTsKICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgfSAgIAogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsgICAKICAgICAgICAgICAgICAgIGkyKys7CiAgICAgICAgICAgICAgICBvW2kyXSA9IHN0cltpXTsKICAgICAgICAgICAgfSAgIAogICAgICAgIH0gICAKICAgICAgICBpZiAoc3RyW2ldID09IDM3IHx8IHN0cltpXSA9PSA0MiB8fCBzdHJbaV0gPT0gNDcpIAogICAgICAgIHsgICAKICAgICAgICAgICAgaWYgKG9baTJdICE9IDQwICYmIG9baTJdICE9IDQzICYmIG9baTJdICE9IDQ1KSAKICAgICAgICAgICAgeyAgIAogICAgICAgICAgICAgICAgaWYgKGkxID4gMCkKICAgICAgICAgICAgICAgIHsgICAKICAgICAgICAgICAgICAgICAgICBrID0gb3BlcihuW2kxIC0xXSwgbltpMV0sIG9baTJdKTsKICAgICAgICAgICAgICAgICAgICBpMS0tOwogICAgICAgICAgICAgICAgICAgIG5baTFdID0gazsKICAgICAgICAgICAgICAgICAgICBpMi0tOwogICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICB9ICAgCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgeyAgIAogICAgICAgICAgICAgICAgaTIrKzsKICAgICAgICAgICAgICAgIG9baTJdID0gc3RyW2ldOwogICAgICAgICAgICB9ICAgCiAgICAgICAgfSAgIAogICAgICAgIGlmIChzdHJbaV0gPT0gNDEpIAogICAgICAgIHsgICAKICAgICAgICAgICAgd2hpbGUgKG9baTJdICE9IDQwKSAKICAgICAgICAgICAgeyAgIAogICAgICAgICAgICAgICAgayA9IG9wZXIobltpMSAtMV0sIG5baTFdLCBvW2kyXSk7CiAgICAgICAgICAgICAgICBpMS0tOwogICAgICAgICAgICAgICAgbltpMV0gPSBrOwogICAgICAgICAgICAgICAgaTItLTsKICAgICAgICAgICAgfSAgIAogICAgICAgIH0gICAKICAgICAgICBpKys7CiAgICB9ICAgCiAgICB3aGlsZSAoaTEgIT0gMCkKICAgIHsgICAKICAgICAgICBrID0gb3BlcihuW2kxIC0xXSwgbltpMV0sIG9baTJdKTsKICAgICAgICBpMS0tOwogICAgICAgIG5baTFdID0gazsKICAgICAgICBpMi0tOwogICAgfSAgIAogICAgcmV0dXJuIG5baTFdOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBhID0gZXZhbF9leHByKCIzICsgNDIgKiAoMSAtIDIgLyAoMyArIDQpIC0gMSAlIDIxKSArIDEiKTsKICAgIHByaW50ZigiJWQiLCBhKTsgCiAgICByZXR1cm4gMDsKfQ==
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