Pagini recente » Cod sursa (job #845668) | Cod sursa (job #2402163) | Cod sursa (job #802102) | Cod sursa (job #2860385) | Cod sursa (job #3265015)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX = 100000;
char v[NMAX+1];
char *p;
int numar(); int paranteza(); long long evaluare();
int numar()
{
int nr = 0;
if(*p == '(')
{
p++;
nr = evaluare();
p++;
}
else
{
while(isdigit(*p))
nr=nr*10+(*p-'0'), p++;
}
return nr;
}
int paranteza()
{
int nr = numar();
while(*p == '*' || *p=='/')
{
if(*p == '*')
p++, nr*=numar();
else if(*p == '/')
p++, nr/=numar();
}
return nr;
}
long long evaluare()
{
int nr = paranteza();
while(*p == '-' || *p == '+')
{
if(*p == '-')
p++, nr-=paranteza();
else if(*p == '+')
p++, nr+=paranteza();
}
return nr;
}
int main()
{
fin >> v;
p = v;
fout << evaluare();
return 0;
}