Pagini recente » Cod sursa (job #3267824) | Cod sursa (job #3269000) | Cod sursa (job #1869793) | Cod sursa (job #3215257) | Cod sursa (job #3220248)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
long long expresie(int &poz);
long long termen(int &poz);
long long factor(int &poz);
long long div(int &poz);
char s[100001];
int poz;
int main()
{
fin>>s;
fout<<expresie(poz);
return 0;
}
long long expresie(int &poz)
{
long long t1=termen(poz);
while(s[poz]=='+' || s[poz]=='-')
{
if(s[poz]=='+')
poz++,t1+=termen(poz);
else
poz++,t1-=termen(poz);
}
return t1;
}
long long termen(int &poz)
{
long long f1=factor(poz);
while(s[poz]=='*' || s[poz]=='/')
{
if(s[poz]=='*')
poz++,f1*=factor(poz);
else
poz++,f1/=factor(poz);
}
return f1;
}
long long factor(int &poz)
{
long long rez=0;
if(s[poz]=='(')
{
poz++;
rez=expresie(poz);
poz++;
}
else
while(s[poz]>='0' && s[poz]<='9')
rez=rez*10+s[poz++]-'0';
return rez;
}