Pagini recente » Cod sursa (job #2793818) | Cod sursa (job #2567060) | Cod sursa (job #113724) | Cod sursa (job #2920163) | Cod sursa (job #1812469)
#include <fstream>
#include <string.h>
//codeblocks the great!
using namespace std;
const int N = 100001;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char c[N];
int p=0;
int exp();
int ter();
int fact();
int exp()
{
int sum=ter();
while(c[p]=='+'||c[p]=='-')
{
if(c[p]=='+')
{
p++;
sum+=ter();
}
else
{
p++;
sum-=ter();
}
}
return sum;
}
int ter()
{
int prod=fact();
while(c[p]=='*'||c[p]=='/')
{
if(c[p]=='*')
{
p++;
prod=prod*fact();
}
else
{
p++;
prod/=fact();
}
}
return prod;
}
int fact()
{
int semn=1,val=0;
while(c[p]=='-')
{
p++;
semn=-semn;
}
if(c[p]=='(')
{
p++;
val=exp();
p++;
return semn*val;
}
while(isdigit(c[p]))
{
val=val*10+(c[p]-'0');
p++;
}
return semn*val;
}
int main()
{
in.getline(c,N);
out<<exp();
return 0;
}