Pagini recente » Cod sursa (job #2613463) | Cod sursa (job #2909652) | Cod sursa (job #2061770) | Cod sursa (job #2271155) | Cod sursa (job #1884419)
#include<cstdio>
#define NMAX 100001
using namespace std;
char e[NMAX];
int n;
int Expresie();
int Termen();
int Factor();
int Expresie()
{
int val = Termen();
while(e[n] == '+' || e[n] == '-')
{
if(e[n] == '+')
{
n++;
val += Termen();
}
else
{
n++;
val -= Termen();
}
}
return val;
}
int Termen()
{
int val;
val = Factor();
while(e[n] == '*' || e[n] == '/')
{
if(e[n] == '*')
{
n++;
val *= Factor();
}
else
{
n++;
val /= Factor();
}
}
return val;
}
int Factor()
{
int val, semn;
val = 0; semn = 1;
while(e[n] == '-')
{
n++;
semn = -semn;
}
if(e[n] == '(')
{
n++; // trec peste (
val = Expresie();
n++;
return val*semn;
}
while(e[n] >='0' && e[n] <= '9')
{
val = 10*val + e[n] - '0';
n++;
}
return val*semn;
}
int main()
{
FILE *fin, *fout;
fin = fopen("evaluare.in","r");
fout = fopen("evaluare.out","w");
fscanf(fin,"%s",e);
fclose(fin);
fprintf(fout,"%d\n",Expresie());
fclose(fout);
return 0;
}