Pagini recente » Cod sursa (job #794571) | Cod sursa (job #3004514) | Cod sursa (job #3228807) | Cod sursa (job #1327463) | Cod sursa (job #563133)
Cod sursa(job #563133)
#include<fstream>
#define NMAX 100005
using namespace std;
int n;
char a[NMAX], *p;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int termen();
int factor();
int evaluare()
{
int r;
r=termen();
while (*p=='+' || *p=='-')
if (*p=='+') ++p, r+=termen();
else ++p, r-=termen();
return r;
}
int termen()
{
int r=factor();
while (*p=='*' || *p=='/')
if (*p=='*') ++p, r*=factor();
else if (*p=='/') ++p, r/=factor();
return r;
}
int factor()
{
int r=0;
if (*p=='(')
{
++p;
r=evaluare();
++p;
}
else
//F10
while (strchr("0123456789\n", *p) && *p-'0'>=0)
{
r=r*10+(*p-'0');
++p;
}
return r;
}
int main()
{
f.getline(a, NMAX);
p=a;
g<<evaluare()<<"\n";
f.close();
g.close();
return 0;
}