Pagini recente » Cod sursa (job #1259024) | Cod sursa (job #446808) | Cod sursa (job #1748669) | Cod sursa (job #2701895) | Cod sursa (job #697386)
Cod sursa(job #697386)
#include<fstream>
#define NMAX 100010
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char a[NMAX];
int i;
void Citeste()
{
f.getline(a, NMAX);
}
int Termen();
int Factor();
int Evalueaza()
{
int rez=Termen(), t2, sg;
while (a[i]=='+' || a[i]=='-')
{
if (a[i]=='+') sg=1; else sg=-1;
++i;
t2=Termen()*sg;
rez+=t2;
}
return rez;
}
int Termen()
{
int rez=Factor(), f2;
while (a[i]=='*' || a[i]=='/')
if (a[i]=='*') ++i, f2=Factor(), rez*=f2;
else ++i, f2=Factor(), rez/=f2;
return rez;
}
int Factor()
{
int nr=0;
if (a[i]=='(') ++i, nr=Evalueaza(), ++i;
else while (a[i]>='0' && a[i]<='9') nr=nr*10+a[i++]-'0';
return nr;
}
int main()
{
Citeste();
g<<Evalueaza()<<"\n";
f.close();
g.close();
return 0;
}