Pagini recente » Borderou de evaluare (job #1479077) | Cod sursa (job #2831603) | Borderou de evaluare (job #2755969) | Borderou de evaluare (job #2279893) | Cod sursa (job #217126)
Cod sursa(job #217126)
#include <stdio.h>
#define smax 100010
char s[smax],*p=s;
void read();
void solve();
long termen();
long factor();
long eval() //+/-
{
long r=termen();
while (*p=='+'||*p=='-')
{
if (*p=='+')
{
++p;
r+=termen();
}
if (*p=='-')
{
++p;
r-=termen();
}
}
return r;
}
long termen()
{
long r=factor(); //*//
while (*p=='*'||*p=='/')
{
if (*p=='*')
{
++p;
r*=factor();
}
if (*p=='/')
{
++p;
r/=factor();
}
}
return r;
}
long factor()
{
long r=0; //calc term
if (*p=='(')
{
++p;
r=eval();
++p;
}
else
while (*p>='0'&&*p<='9')
{
r=r*10+*p-'0';
++p;
}
return r;
}
FILE *f,*g;
int main()
{
g=fopen("evaluare.out","wt");
read();
solve();
fclose(g);
return 0;
}
void read()
{
f=fopen("evaluare.in","rt");
fscanf(f,"%s\n",&s);
fclose(f);
}
void solve()
{
fprintf(g,"%ld\n",eval());
}