Pagini recente » Cod sursa (job #141026) | Cod sursa (job #2315786) | Cod sursa (job #1524832) | Cod sursa (job #1687692) | Cod sursa (job #1135697)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char p[10000];
int i=0;
int nr(int &i);
int eval(int &i);
int termen(int &i);
int factor(int &i);
int main()
{
f.getline(p,10000);
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;
}