Pagini recente » Cod sursa (job #2561391) | Cod sursa (job #1723418) | Cod sursa (job #276845) | Cod sursa (job #2659624) | Cod sursa (job #697657)
Cod sursa(job #697657)
#include<stdio.h>
FILE *f , *g ;
char s[100002] ;
long t , i ;
void citire();
long calc();
long term();
long fact();
void tipar();
int main()
{
citire();
tipar();
return 0;
}
void citire()
{
f=fopen("evaluare.in" , "r" );
fscanf(f , "%s" , s );
fclose(f);
}
void tipar()
{
g=fopen("evaluare.out" , "w" );
fprintf(g , "%ld" , calc());
fclose(g);
}
long calc()
{
long rez = term();
while(s[i] == '+' || s[i] == '-')
if(s[i] == '+')
{
i++;
rez+=term();
}
else
{
i++;
rez-=term();
}
return rez;
}
long term()
{
long t = fact();
while(s[i] == '*' || s[i] == '/')
if(s[i] == '*')
{
i++;
t*=fact();
}
else
{
i++;
t/=fact();
}
return t;
}
long fact()
{
long f = 0;
if(s[i] == '(')
{
i++;
f = calc();
i++;
}
while(s[i] >= '0' && s[i] <= '9')
f = f*10 + s[i++]-48;
return f;
}