Pagini recente » Cod sursa (job #1051316) | Monitorul de evaluare | Cod sursa (job #2311977) | Cod sursa (job #947773) | Cod sursa (job #1088674)
#include <fstream>
using namespace std;
ifstream input("evaluare.in");
ofstream output("evaluare.out");
char s[100000],*p;
int nr;
int eval();
int termen();
int factor();
int eval()
{
int r = termen();
while((*p=='+') || (*p=='-'))
{
if (*p=='+') {p++;r+=termen();}
if (*p=='-') {p++;r-=termen();}
}
return r;
}
int termen()
{
int r = factor();
while ((*p=='*')|| (*p=='/'))
{
if (*p=='*') {p++;r*=factor();}
if (*p=='/') {p++;r/=factor();}
}
return r;
}
int factor()
{
int r;
r=0;
if(*p=='(')
{
p++;r=eval();p++;
}
else
{
while('0'<=*p && *p<='9')
{
r*=10;
r+=(int)*p-'0';
p++;
}
}
return r;
}
int main()
{
input.get(s,100000);
p = s;
nr = eval();
output << nr;
return 0;
}