Pagini recente » Cod sursa (job #3307475) | Cod sursa (job #572503) | Cod sursa (job #3334000) | Cod sursa (job #2005915) | Cod sursa (job #3343923)
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char v[100001];
int t;
int expresie();
int termen();
int factor();
int expresie()
{
int suma=termen();
while(v[t]=='+' || v[t]=='-')
{
if(v[t]=='+')
{
t++;
suma=suma+termen();
}
else if(v[t]=='-')
{
t++;
suma=suma-termen();
}
}
return suma;
}
int termen()
{
int prod=factor();
while(v[t]=='*' || v[t]=='/')
{
if(v[t]=='*')
{
t++;
prod=prod*factor();
}
else if(v[t]=='/')
{
t++;
prod=prod/factor();
}
}
return prod;
}
int factor()
{
int semn=1, suma=0;
while(v[t]=='-')
{
semn=semn*(-1);
t++;
}
if(v[t]=='(')
{
t++;
suma=expresie();
t++;
return semn*suma;
}
while(v[t]>='0'&& v[t] <= '9')
{
suma=suma*10+v[t]-'0';
t++;
}
return semn*suma;
}
int main()
{
in>>v;
t=0;
out << expresie();
return 0;
}