Pagini recente » Cod sursa (job #1111989) | Cod sursa (job #2901011) | Cod sursa (job #1139510) | Cod sursa (job #1730521) | Cod sursa (job #2138560)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char e[100005];
long factor(int &i);
long operatie(int &i);
long termen(int &i)
{
long 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 factor(int &i)
{
long nr1=termen(i);
while(e[i]=='/' || e[i]=='*')
{
i++;
if(e[i-1]=='*')
nr1*=factor(i);
else
nr1/=factor(i);
}
return nr1;
}
long operatie(int &i)
{
long 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);
printf("%ld\n",operatie(x));
return 0;
}