Pagini recente » Cod sursa (job #288510) | Cod sursa (job #879710) | Cod sursa (job #2137566) | Cod sursa (job #1344159) | Cod sursa (job #1548005)
#include<stdio.h>
#include<cctype>
FILE *in, *out;
char c;
int expresie();
int termen();
int factor();
int expresie ()
{
int raspuns = termen ();
while(c=='+' or c=='-')
{
if(c=='+')
{
c=fgetc(in);
raspuns += termen();
}
else
{
c=fgetc(in);
raspuns -= termen ();
}
}
return raspuns;
}
int termen()
{
int raspuns=factor();
while (c=='*' or c=='/')
{
if(c=='*')
{
c=fgetc(in);
raspuns *= factor();
}
if(c=='/')
{
c=fgetc(in);
raspuns /=factor();
}
}
return raspuns;
}
int factor()
{
int raspuns=0,semn=1;
while(c=='-')
{
semn=-semn;
c=fgetc(in);
}
while(c=='(')
{
c=fgetc(in);
raspuns=expresie();
c=fgetc(in);
return semn * raspuns;
}
while(isdigit(c))
{
raspuns=raspuns*10+ (c-'0');
c=fgetc(in);
}
return raspuns*semn;
}
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;
}