Pagini recente » Cod sursa (job #1123785) | Cod sursa (job #1824059) | Monitorul de evaluare | Cod sursa (job #3138919) | Cod sursa (job #1540732)
#include <stdio.h>
FILE *in, *out;
char c;
int expresie();
int termen();
int factor();
int expresie()
{
int sum=termen();
while(c=='+'|| c=='-')
if(c=='+')
{
c=fgetc(in);
sum=sum+termen();
}
else
{
c=fgetc(in);
sum=sum-termen();
}
return sum;
}
int termen()
{
int prod=factor();
while(c=='*'|| c=='/')
if(c=='*')
{
c=fgetc(in);
prod*=factor();
}
else
{
c=fgetc(in);
prod/=factor();
}
return prod;
}
int factor()
{
int val=0, semn=1;
while(c=='-')
{
semn=-semn;
c=fgetc(in);
}
if(c=='(')
{
c=fgetc(in);
val=expresie();
c=fgetc(in);
return semn * val;
}
while(c>='0' && c<='9')
{
val=val*10+(c-'0');
c=fgetc(in);
}
return semn* val;
}
int main()
{
in=fopen("evaluare.in", "r");
out=fopen("evaluare.out", "w");
c=fgetc(in);
fprintf(out, "%d\n", expresie());
fclose(in);
fclose(out);
return 0;
}