Pagini recente » Cod sursa (job #2218227) | Cod sursa (job #75980) | Cod sursa (job #2965559) | Cod sursa (job #1647001) | Cod sursa (job #609772)
Cod sursa(job #609772)
#include<fstream>
#include<cstring>
using namespace std;
char e[100010];
int n,sol;
int EvaluareExpresie(int &i);
int Termen(int &i);
int Factor(int &i);
void Citire()
{
ifstream fin("evaluare.in");
fin>>e;
fin.close();
n=strlen(e);
}
int DeterminareValoare(int &i)
{
int aux=0;
while(e[i]>='0' && e[i]<='9')
{
aux=aux*10+(e[i]-'0');
i++;
}
i--;
return aux;
}
int Factor(int &i)
{
int x;
if(e[i]=='(')
{
i++;
x=EvaluareExpresie(i);
i++;
}
else
{
x=DeterminareValoare(i);
i++;
}
return x;
}
int Termen(int &i)
{
int f;
f=Factor(i);
while(i<n && (e[i]=='*' || e[i]=='/'))
{
if(e[i]=='*')
{
i++;
f*=Factor(i);
}
else
{
i++;
f/=Factor(i);
}
}
return f;
}
int EvaluareExpresie(int &i)
{
int t;
t=Termen(i);
while(i<n && (e[i]=='+' || e[i]=='-'))
{
if(e[i]=='+')
{
i++;
t+=Termen(i);
}
else
{
i++;
t-=Termen(i);
}
}
return t;
}
void Afisare()
{
ofstream fout("evaluare.out");
fout<<sol<<"\n";
fout.close();
}
int main()
{
int i=0;
Citire();
sol=EvaluareExpresie(i);
Afisare();
return 0;
}