Pagini recente » Cod sursa (job #1271746) | Cod sursa (job #2951284) | Cod sursa (job #2964864) | Cod sursa (job #2269780) | Cod sursa (job #3225640)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int pos=0;
int termen();
int prod();
int suma();
bool iscif(char ch)
{
if('0'<=ch && ch<='9') return true;
return false;
}
int getnr()
{
int nr=0;
while(pos<s.size() && iscif(s[pos]))
{
nr=nr*10+(s[pos]-'0');
pos++;
}
return nr;
}
int termen()
{
if(s[pos]=='(')
{
pos++;
int val=suma();
pos++;
return val;
}
else
{
int nr=getnr();
return nr;
}
}
int prod()
{
int nr=termen();
while(pos<s.size() && (s[pos]=='*' || s[pos]=='/'))
{
if(s[pos]=='*')
{
pos++;
int nxt=termen();
nr=nr*nxt;
}
else
{
pos++;
int nxt=termen();
nr=nr/nxt;
}
}
return nr;
}
int suma()
{
int nr=prod();
while(pos<s.size() && (s[pos]=='+' ||s[pos]=='-'))
{
int semn;
if(s[pos]=='+') semn=1;
else semn=-1;
pos++;
int nxt=prod();
nr=nr+semn*nxt;
}
return nr;
}
signed main()
{
fin>>s;
fout<<suma();
return 0;
}