Pagini recente » Cod sursa (job #2055836) | Cod sursa (job #2185863) | Cod sursa (job #2068298) | Cod sursa (job #1433518) | Cod sursa (job #2138554)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char e[100005];
long long int factor(int &i);
long long int operatie(int &i);
long long int termen(int &i)
{
long long int nr=0;
if(e[i]=='(')
{
i++;
nr=operatie(i);
i++;
}
else
{
while(isdigit(e[i]))
{
nr=nr*10+(e[i]-'0');
i++;
}
}
return nr;
}
long long int factor(int &i)
{
long long int nr1;
nr1=termen(i);
while(e[i]=='/' || e[i]=='*')
{
i++;
if(e[i-1]=='*')
nr1*=factor(i);
else
nr1/=factor(i);
}
return nr1;
}
long long int operatie(int &i)
{
long long int t1;
t1=factor(i);
while(e[i]=='+' || e[i]=='-')
{
i++;
if(e[i-1]=='+')
t1+=factor(i);
else
t1-=factor(i);
}
return t1;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
int x=0;
cin.get(e,100005);
cout<<operatie(x);
return 0;
}