Pagini recente » Cod sursa (job #1834308) | Cod sursa (job #2999613) | Cod sursa (job #64862) | Cod sursa (job #1268185) | Cod sursa (job #1968586)
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
#include <iomanip>
#include <queue>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
#define nmax 100010
char a[nmax];
int poz;
int getNumber()
{
int ret=0;
while (a[poz]>='0'&&a[poz]<='9')
ret=ret*10+a[poz]-'0',poz++;
return ret;
}
int adunare();
int inmultire();
int termen();
int main()
{
fin >> a;
poz=0;
fout << adunare();
}
int adunare()
{
int t1,t2;
t1=inmultire();
while (a[poz]=='+'||a[poz]=='-')
{
bool scad=(a[poz++]=='+' ? 0 : 1);
t2=inmultire();
if (scad)
t1-=t2;
else
t1+=t2;
}
return t1;
}
int inmultire()
{
int t1,t2;
t1=termen();
while (a[poz]=='*'||a[poz]=='/')
{
bool impart=(a[poz++]=='*' ? 0 : 1);
t2=termen();
if (impart)
t1/=t2;
else
t1*=t2;
}
return t1;
}
int termen()
{
int t;
if (a[poz]=='(')
{
poz++;
t=adunare();
poz++;
}
else
t=getNumber();
return t;
}