Pagini recente » Cod sursa (job #574418) | Cod sursa (job #1550264) | Cod sursa (job #2123329) | Cod sursa (job #1393934) | Cod sursa (job #2170379)
#include <fstream>
#define VAL 100005
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
char c[VAL];
char *P=c;
int evaluare();
int termen();
int factor();
int evaluare()
{
int nr=termen();
while (*P=='+' || *P=='-')
{
if (*P=='+')
{
P++;
nr+=termen();
}
else
{
P++;
nr-=termen();
}
}
return nr;
}
int termen()
{
int nr=factor();
while (*P=='*' || *P=='/')
{
if (*P=='*')
{
P++;
nr*=factor();
}
else
{
P++;
nr/=factor();
}
}
return nr;
}
int factor()
{
int nr=0;
if (*P=='(')
{
P++;
nr=evaluare();
P++;
}
while ('0'<=*P && *P<='9')
{
nr=nr*10+(*P)-'0';
P++;
}
return nr;
}
int main()
{
fin >> c;
fout << evaluare() << '\n';
fin.close();
fout.close();
return 0;
}