Pagini recente » Istoria paginii runda/igorj_2 | Cod sursa (job #482092) | Monitorul de evaluare | Istoria paginii runda/sos_dp_cu_segtree_beats_persistent/clasament | Cod sursa (job #673969)
Cod sursa(job #673969)
#include<fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int expresie();
int termen();
int factor();
int n,i,t;
char v[100002];
int main(){
f.get(v,100002);
g<<expresie();
return 0;
}
int expresie()
{
int r=termen();
while(v[i]=='+' || v[i]=='-')
{
if(v[i]=='+')
{
i++;
r+=termen();
}else
{
i++;
r-=termen();
}
}
return r;
}
int termen()
{
int r=factor();
while(v[i]=='*' || v[i]=='/')
{
if(v[i]=='*')
{
i++;
r*=factor();
}else
{
i++;
r/=factor();
}
}
return r;
}
int factor()
{
int r;
if(v[i]=='(')
{
i++;
r=expresie();
i++;
}else
{
r=0;
while(v[i]>='0' && v[i]<='9')
{
r=r*10+(v[i]-'0');
i++;
}
}
return r;
}