Pagini recente » Cod sursa (job #1963426) | Cod sursa (job #2216789) | Cod sursa (job #2158953) | Cod sursa (job #2882053) | Cod sursa (job #2090213)
#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]=='+'){
i++;
t[p2].y=1;}
else{
if(a[i]=='-'){
i++;
t[p2].y=-1;}}
t[p2].x+=t[p2].y*prelucrare();
if(a[i]==')'){
p2--;
return t[p2+1].x;}
}
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;
}