Pagini recente » Cod sursa (job #729092) | Cod sursa (job #2511200) | Cod sursa (job #461881) | Cod sursa (job #3170854) | Cod sursa (job #2974407)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in") ;
ofstream fout("evaluare.out") ;
string s ;
int i,eval(),termen(),factor(),numar();
int main()
{
fin>>s ;
fout<<eval() ;
return 0;
}
int eval()
{
long long cnt=termen() ;
while(s[i]=='+' || s[i]=='-')
{
if(s[i]=='+') i++,cnt+=termen() ;
else i++,cnt-=termen() ;
}
return cnt ;
}
/// (1+1)*13+10/2
int termen()
{
long long cnt=factor() ;
while(s[i]=='*' || s[i]=='/')
{
if(s[i]=='*') i++,cnt*=factor() ;
else i++,cnt/=factor() ;
}
return cnt ;
}
int factor()
{
long long cnt ;
if(s[i]=='(') i++,cnt=eval(),i++ ;
else cnt=numar() ;
return cnt ;
}
int numar()
{
long long nr=0 ;
while(isdigit(s[i])) nr=nr*10+(s[i]-'0'),i++ ;
return nr ;
}