Pagini recente » Cod sursa (job #2239678) | Cod sursa (job #2320385) | Cod sursa (job #2621432) | Cod sursa (job #2871658) | Cod sursa (job #2554321)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100100];
int eval(char s[])
{
int i=0,ct,semn=1,p=0,st[100100]={0},ok;
while (s[i])
{
ok=0;
if(s[i]=='(')
{
char t[100100]={0};
int d=1,j=-1;
for(i++;s[i]&&d;i++)
{
t[++j]=s[i];
if(s[i]==')')
d--;
if(s[i]=='(')
d++;
}
t[j]=0;
ct=eval(t);
ok=1;
}
else if(s[i]=='+')
{
semn=1;
i++;
}
else if(s[i]=='-')
{
semn=2;
i++;
}
else if(s[i]=='*')
{
semn=3;
i++;
}
else if(s[i]=='/')
{
semn=4;
i++;
}
else
{
ct=0;
ok=1;
while(s[i]&&strchr("0123456789",s[i]))
{
ct=ct*10+s[i]-'0';
i++;
}
}
if(ok)
{
if(semn==1)
st[++p]=ct;
else if(semn==2)
st[++p]=-ct;
else if(semn==3)
st[p]*=ct;
else
st[p]/=ct;
semn=0;
}
}
int res=0;
for(int i=1;i<=p;i++)
res+=st[i];
return res;
}
int main(int argc, const char * argv[]) {
f>>s;
g<<eval(s);
return 0;
}