Pagini recente » Cod sursa (job #1675392) | Cod sursa (job #438982) | Cod sursa (job #3216900) | Cod sursa (job #5510) | Cod sursa (job #1082135)
#include<fstream>
using namespace std;
int p;
char s[100001];
int eval();
int termen();
int factor();
int nr();
int main()
{
fstream cin("evaluare.in",ios::in);
fstream cout("evaluare.out",ios::out);
cin.getline(s,100000);
cout<<eval()<<'\n';
return 0;
}
int eval()
{
int r=termen();
while (s[p]=='+' || s[p]=='-')
{
if (s[p]=='+') {++p;r+=termen();}
else {++p;r-=termen();}
}
return r;
}
int termen()
{
int r=factor();
while (s[p]=='*' || s[p]=='/')
{
if (s[p]=='*') {++p;r*=factor();}
else {++p;r/=factor();}
}
return r;
}
int factor()
{
int r;
if (s[p]=='(') {++p;r=eval();++p;}
else if (s[p]<='9' && s[p]>='0') r=nr();
return r;
}
int nr()
{
int x=0;
while (s[p]>='0' && s[p]<='9')
{
x=x*10+(s[p]-'0');
++p;
}
return x;
}