Pagini recente » Cod sursa (job #1231609) | Cod sursa (job #156196) | Cod sursa (job #1762927) | Cod sursa (job #2684300) | Cod sursa (job #1542912)
#include <stdio.h>
using namespace std;
FILE *fin, *fout;
int expresie();
int factor();
int termen();
char c;
int expresie()
{
int sum = termen();
while(c == '+' || c == '-')
{
if(c == '+')
{
c = fgetc(fin);
sum = sum + termen();
}
else
{
c = fgetc(fin);
sum = sum - termen();
}
}
return sum;
}
int termen()
{
int prod = factor();
while(c == '*' || c == '/')
{
if(c == '*')
{
c = fgetc(fin);
prod = prod*factor();
}
else
{
c = fgetc(fin);
prod = prod/factor();
}
}
return prod;
}
int factor()
{
int val = 0;
int semn = 1;
while(c == '-')
{
semn = -semn;
c = fgetc(fin);
}
if(c == '(')
{
c = fgetc(fin);
val = expresie();
c = fgetc(fin);
return semn*val;
}
while(c >= '0' && c <= '9')
{
val = val*10 + (c-'0');
c= fgetc(fin);
}
return semn*val;
}
int main()
{
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
c = fgetc(fin);
fprintf(fout, "%d", expresie());
return 0;
}