Pagini recente » Cod sursa (job #2285929) | Cod sursa (job #2849779) | Cod sursa (job #1230726) | Cod sursa (job #609062) | Cod sursa (job #3260284)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX = 100000;
char v[NMAX+1], *curr;
int numar();
long long evaluare();
int termen();
int numar()
{
long long nr = 0;
if(*curr == '(')
{
curr++;
nr = evaluare();
curr++;
}
else if(isdigit(*curr))
{
while(isdigit(*curr))
nr = nr*10 + (*curr - '0'), curr++;
}
return nr;
}
int termen()
{
int nr = numar();
while(*curr == '*' || *curr == '/')
{
if(*curr == '*')
{
curr++;
nr*=numar();
}
else
{
curr++;
nr/=numar();
}
}
return nr;
}
long long evaluare()
{
long long rez = termen();
while(*curr == '-' || *curr == '+')
{
if(*curr == '-')
{
curr++;
rez-=termen();
}
else
{
curr++;
rez+=termen();
}
}
return rez;
}
int main()
{
fin.getline(v, NMAX);
curr = v;
fout << evaluare();
return 0;
}