Pagini recente » Cod sursa (job #337261) | Cod sursa (job #337039) | Atasamentele paginii Profil Tincses | Monitorul de evaluare | Cod sursa (job #3333896)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i=0;
int expresie(string &s);
int termen(string &s);
int factor(string &s);
int numar(string &s);
int expresie(string &s)
{
int ans=termen(s);
while(s[i]=='+'||s[i]=='-')
{
if(s[i]=='+')
{i++;
ans+=termen(s);
}
else
{i++;
ans-=termen(s);
}
}
return ans;
}
int termen(string &s)
{
int ans=factor(s);
while(s[i]=='*'||s[i]=='/')
{
if(s[i]=='*')
{i++;
ans*=factor(s);
}
else
{i++;
ans/=factor(s);
}
}
return ans;
}
int factor(string &s)
{
int ans;
if(s[i]=='(')
{i++;
ans=expresie(s);
i++;
}
else ans=numar(s);
return ans;
}
int numar(string &s)
{
int ans=0;
while(s[i]>='0'&&s[i]<='9')
{
ans=ans*10+s[i]-'0';
i++;
}
return ans;
}
int main()
{
string s;
fin>>s;
fout<<expresie(s);
return 0;
}