Pagini recente » Cod sursa (job #2564845) | Cod sursa (job #3132874) | Cod sursa (job #2040068) | Cod sursa (job #2052920) | Cod sursa (job #1329025)
#include <fstream>
#include <cstring>
#define DIM 100001
using namespace std;
char s[DIM];
char *p;
int lg;
int termen();
int factor();
int tree();
int termen()
{
int nr;
if(*p == '(')
{
p++; nr = tree(); p++;
}
else
{
nr=0;
while( *p>='0' && *p <= '9')
{
nr=nr*10+(*p)-'0';
++p;
}
}
return nr;
}
int factor()
{
int prod=termen();
while( *p == '*' || *p == '/')
{
if(*p == '*')
{
++p;
prod*=termen();
}
else
{
++p;
prod/=termen();
}
}
return prod;
}
int tree()
{
int rez=factor();
while(p-s<=lg-1&&(*p == '+' || *p == '-'))
{
if(*p == '+')
{
++p;
rez+=factor();
}
else
{
++p;
rez-=factor();
}
}
return rez;
}
int main()
{
ifstream in("evaluare.in");
ofstream out("evaluare.out");
in.get(s, DIM);
lg=strlen(s);
p=s;
out<<tree()<<"\n";
in.close();
out.close();
return 0;
}