Pagini recente » Cod sursa (job #904251) | Cod sursa (job #1675805) | Cod sursa (job #836821) | Cod sursa (job #396873) | Cod sursa (job #2717786)
#include <fstream>
#include<string>
using namespace std;
ifstream in("evaluere.in")
ofstream out("evaluare.out");
int expresie();
int termen();
int factor();
int idx;
char s[100005];
int expresie()
{
int rez = termen();
while(s[idx] == '+' || s[idx] == '-')
{
if(s[idx] == '+')
{
idx ++;
rez += termen();
}
else{
idx ++;
rez -= termen();
}
}
return rez;
}
int termen()
{
int rez = factor();
while(s[idx] == '*' || s[idx] == '/')
{
if(s[idx] == '*')
{
idx ++;
rez *= factor();
}
else{
idx ++;
rez /= factor();
}
}
return rez;
}
int factor()
{
int rez = 0;
if(s[idx] == '(' )
{
idx ++;
rez = expresie();
idx ++;
}
else{
while(s[idx] >= '0' && s[idx] <= '9')
{
rez = rez * 10 + s[idx] - '0';
idx ++;
}
}
return rez;
}
int main()
{
cin >> s;
idx = 0;
cout << expresie();
return 0;
}