Pagini recente » Cod sursa (job #2823558) | Cod sursa (job #1495421) | Cod sursa (job #490332) | Cod sursa (job #214465) | Cod sursa (job #3225637)
#include <bits/stdc++.h>
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)
{
int val=ch-'0';
if(0<=val && val<=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+nxt;
}
return nr;
}
int main()
{
fin>>s;
fout<<suma();
return 0;
}