Pagini recente » Cod sursa (job #1488905) | Cod sursa (job #1367241) | Cod sursa (job #410962) | Cod sursa (job #2357346) | Cod sursa (job #3341404)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int evaluare();
int termen();
int element();
int number();
int i=0;
int main()
{
fin>>s;
i=0;
fout<<evaluare();
return 0;
}
int evaluare()
{
int a=termen();
while((s[i]=='+'||s[i]=='-')&&i<s.size())
{
if(s[i]=='+'){i++;a+=termen();}
else {i++;a-=termen();}
}
return a;
}
int termen()
{
int a=element();
while((s[i]=='*'||s[i]=='/')&&i<s.size())
{
if(s[i]=='*')
{
i++;
a*=element();
}
else
{
i++;
a/=element();
}
}
return a;
}
int element()
{
int res;
if(s[i]=='(')
{
i++;
res=evaluare();
i++;
}
else if(s[i]>='0'&&s[i]<='9')
{
res=number();
}
return res;
}
int number()
{
int res=0;
while(isdigit(s[i]))
{
res=res*10+(s[i]-'0');
i++;
}
return res;
}