Pagini recente » Cod sursa (job #2325506) | Cod sursa (job #1015109) | Cod sursa (job #2402605) | Cod sursa (job #2104195) | Cod sursa (job #1370584)
#include <fstream>
#define NMAX 100005
using namespace std;
char s[NMAX];
int p;
int eval();
int termen();
int factor();
int nr();
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f.getline(s,NMAX);
g<<eval()<<"\n";
return 0;
}
int eval()
{
int r=termen();
while(s[p] == '+' || s[p] == '-')
{
if (s[p] == '+') {++p;r+=termen();}
else if (s[p] == '-') {++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;
if(s[p] == '(') {++p;r=eval();++p;}
else if(s[p] >='0' && s[p]<='9') r=nr();
return r;
}
int nr()
{
int n=0;
while(s[p] >='0' && s[p]<='9')
{
n = n * 10 + (s[p] - '0');
++p;
}
return n;
}