Pagini recente » Cod sursa (job #2079555) | Cod sursa (job #364520) | Cod sursa (job #1427066) | Cod sursa (job #2154192) | Cod sursa (job #1362002)
#include <fstream>
using namespace std;
const int N=100000;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[N+1];
int i=0;
int termen();
int eval()
{
int r=termen();
while(s[i]=='+' || s[i]=='-')
{
if(s[i]=='+')
{
++i;
r += termen();
}
if(s[i]=='-')
{
++i;
r -= termen();
}
}
return r;
}
int factor()
{
int r=0;
if( s[i]=='(' )
{
++i;
r = eval();
++i;
}
else
{
while('0'<=s[i] && s[i]<='9')
{
r=r*10+(s[i]-'0');
++i;
}
}
return r;
}
int termen()
{
int r=factor();
while (s[i]=='*' || s[i]=='/')
{
if(s[i]=='*')
{
++i;
r*=factor();
}
if(s[i]=='/')
{
++i;
r/=factor();
}
}
return r;
}
int main()
{
in >> s;
out<<eval()<<"\n";
return 0;
}