Pagini recente » Cod sursa (job #770587) | Cod sursa (job #775184) | Cod sursa (job #2123020) | Cod sursa (job #880420) | Cod sursa (job #2555073)
#include <iostream>
#include<fstream>
#include<cstring>
#include<algorithm>
#define N 100005
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int evaltermen();
int evalfactor();
int evalexpresie();
char e[N];
int lg,i;
int evalexpresie()
{
int t=evaltermen();
while(i<lg&&(e[i]=='-'||e[i]=='+'))
{
char op=e[i];
i++;
int f=evaltermen();
if(op=='-')t=t-f;
else t=t+f;
}
return t;
}
int evaltermen()
{
int t=evalfactor();
while(i<lg&&(e[i]=='*'||e[i]=='/'))
{
char op=e[i];
i++;
int f=evaltermen();
if(op=='*')t=t*f;
else t=t/f;
}
return t;
}
int evalfactor()
{
int t;
if(e[i]=='(')
{
i++;//sarim peste (
t=evalexpresie();
i++;//sarim peste )
return t;
}
else
{
//formam nr
int nr=0;
while(i<lg&&isdigit(e[i]))
{
nr=nr*10+e[i]-'0';
i++;
}
return nr;
}
}
int main()
{
fin>>e;
lg=strlen(e);
fout<<evalexpresie();
return 0;
}