Pagini recente » Cod sursa (job #416318) | Cod sursa (job #2606842) | Cod sursa (job #2305336) | Cod sursa (job #28323) | Cod sursa (job #1642861)
#include <fstream>
#include <cstring>
#define NMAX 100005
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval();
int termen();
int factor();
int nr();
int l,p;
char s[NMAX];
int main()
{
f.getline(s,NMAX);
l=strlen(s);
p=0;
g<<eval();
}
int eval()
{
int r=termen();
while(s[p] =='+' || s[p] == '-')
{
if(s[p] == '+') {++p;r+=termen();}
else {++p;r-=termen();}
}
return r;
}
int termen()
{
int r=factor();
while(s[p] == '*' || s[p] =='/')
{
if(s[p] == '*') {++p;r*=factor();}
else {++p;r/=factor();}
}
return r;
}
int factor()
{
int r=0;
if(s[p] == '(') {++p;r=eval();++p;}
else if(s[p] >='0' && s[p]<='9') r=nr();
return r;
}
int nr()
{
int r=0;
while(s[p] >= '0' && s[p] <= '9')
{
r=r*10+(s[p]-'0');
++p;
}
return r;
}