Pagini recente » Cod sursa (job #2317269) | Cod sursa (job #1060638) | Cod sursa (job #2136207) | Cod sursa (job #938120) | Cod sursa (job #3237240)
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int i;
string s;
int posibprod(),numar();
int expresie()
{
int sum = posibprod();//posibilitatea de produs
while(s[i]=='+'||s[i]=='-')
{
if(s[i]=='+')
i++,sum+=posibprod();
else
i++,sum-=posibprod();
}
return sum;
}
int posibprod()
{
int prod=numar();//contruieste numarul
while(s[i]=='*'||s[i]=='/')
{
if(s[i]=='*')
i++,prod*=numar();
else
i++,prod/=numar();
}
return prod;
}
int numar()
{
int semn=1,val=0;
if(s[i]=='-')
{
semn=-semn;
i++;
}
if(s[i]=='(')
{
i++;
val=expresie();
i++;
return semn*val;
}
while(s[i]>='0'&&s[i]<='9')
val=val*10+(s[i++]-'0');
return val*semn;
}
int main()
{
cin>>s;
cout<<expresie();
return 0;
}