Pagini recente » Cod sursa (job #2896844) | Cod sursa (job #2491938) | Cod sursa (job #759941) | Cod sursa (job #2478853) | Cod sursa (job #1135698)
#include <iostream>
#include <fstream>
#include <string>
#define Nmax 100005
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char p[Nmax];
int i=0;
int nr(int &i);
int eval(int &i);
int termen(int &i);
int factor(int &i);
int main()
{
f.getline(p,Nmax);
f.close();
g<<eval(i);
g.close();
return 0;
}
int nr(int &i)
{
int ret=0;
while((int) p[i]>=48 && (int) p[i]<=57)
{
ret=ret*10+p[i]-'0';
++i;
}
return (ret);
}
int eval(int &i)
{
int r=termen(i);
while(p[i]=='+' || p[i]=='-')
if (p[i]=='+') {++i;r=r+termen(i);}
else {++i;r=r-termen(i);}
return r;
}
int termen(int &i)
{
int r=factor(i);
while(p[i]=='*' || p[i]=='/')
if (p[i]=='*') {++i;r=r*factor(i);}
else {++i;r=r/factor(i);}
return(r);
}
int factor(int &i)
{
int r;
if (p[i]=='('){++i;r=eval(i);++i;}
else r=nr(i);
return r;
}