Pagini recente » Cod sursa (job #1150093) | Cod sursa (job #284800) | Cod sursa (job #2582845) | Cod sursa (job #1582103) | Cod sursa (job #153275)
Cod sursa(job #153275)
#include<stdio.h>
#include<ctype.h>
#define NMAX 100051
char s[NMAX];
int k,poz;
int eval();
int termen();
int prod();
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s);
k=eval();
printf("%d\n",k);
return 0;
}
int eval()
{
int a=prod();
while (s[poz]=='+'||s[poz]=='-')
{
if (s[poz++]=='+')
a=a+prod();
else
a=a-prod();
}
return a;
}
int prod()
{
int a=termen();
while (s[poz]=='*'||s[poz]=='/')
{
if (s[poz++]=='*')
a=a*termen();
else
a=a/termen();
}
return a;
}
int termen()
{
int a=0;
if (s[poz]=='(')
{
poz++;
a=eval();
poz++;
return a;
}
while (isdigit(s[poz]))
a=a*10+s[poz++]-48;
return a;
}