Pagini recente » Cod sursa (job #1930093) | Cod sursa (job #2777045) | Cod sursa (job #1516114) | Cod sursa (job #1052430) | Cod sursa (job #2090206)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int eval();
int prelucrare();
int factor();
struct poz
{
int x,y;
};
poz t[100000];
int i,k,s,p1,p2;
string a;
int eval()
{
p2++;
t[p2].y=1;
t[p2].x=0;
while(i<a.size() && a[i]!=')'){
if(a[i]=='+')
t[p2].y=1;
else{
if(a[i]=='-')
t[p2].y=-1;
else{
t[p2].x+=t[p2].y*prelucrare();
if(a[i]==')'){
p2--;
return t[p2+1].x;}}
}
i++;
}
p2--;
return t[p2+1].x;
}
int prelucrare()
{
int p;
p=factor();
while(i<a.size() && a[i]!='+' && a[i]!='-' && a[i]!=')'){
if(a[i]=='*'){
i++;
p*=factor();}
else{
if(a[i]=='/'){
i++;
p/=factor();}
}
}
return p;
}
int factor()
{
int n=0;
if(a[i]=='('){
i++;
n=eval();
i++;}
else{
while(i<a.size() && a[i]-'0'<10 && a[i]-'0'>=0){
n=n*10+(a[i]-'0');
i++;
}
}
return n;
}
int main()
{fin>>a;
i=0;
p1=1;
p2=0;
fout<<eval();
return 0;
}