Pagini recente » Cod sursa (job #53496) | Cod sursa (job #410924) | Cod sursa (job #2610072) | Cod sursa (job #1121275) | Cod sursa (job #3220246)
#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),sgn;
while(s[poz]=='+' || s[poz]=='-')
{
if(s[poz]=='+')
sgn=1;
else sgn=-1;
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;
}