Pagini recente » Cod sursa (job #1607324) | Cod sursa (job #1980732) | Cod sursa (job #2217226) | Cod sursa (job #1521862) | Cod sursa (job #525613)
Cod sursa(job #525613)
#include <algorithm>
using namespace std;
#define DIM 100005
char buff[DIM];
int poz=1;
int eval ();
int termen ();
int factor ();
int eval ()
{
int r;
for (r=termen (); buff[poz]=='+' || buff[poz]=='-'; )
if (buff[poz]=='+')
{
++poz;
r+=termen ();
}
else
{
++poz;
r-=termen ();
}
return r;
}
int termen ()
{
int r;
for (r=factor (); buff[poz]=='*' || buff[poz]=='/'; )
if (buff[poz]=='*')
{
++poz;
r*=factor ();
}
else
{
++poz;
r/=factor ();
}
return r;
}
int factor ()
{
int r;
if (buff[poz]=='(')
{
++poz;
r=eval ();
++poz;
}
else
for (r=0; buff[poz]>='0' && buff[poz]<='9'; ++poz)
r=r*10+buff[poz]-'0';
return r;
}
int main ()
{
freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
fgets (buff+1,DIM,stdin);
printf ("%d",eval ());
return 0;
}