Pagini recente » Cod sursa (job #270522) | Cod sursa (job #1678674) | Cod sursa (job #2623245) | Cod sursa (job #2917399) | Cod sursa (job #1889511)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int p;
string s;
int termeni();
int factori();
int expresii();
///paranteze si numere
int expresii()
{
if(s[p] == '(')
{
p++;
int nr = termeni();
p++;
return nr;
}
else
{
int nr = 0;
while(s[p] >= '0' and s[p] <= '9')
{
nr = nr * 10 + (s[p] - '0');
p++;
}
return nr;
}
}
///inmultiri si impartiri
int factori()
{
int r = expresii();
while(s[p] == '*' or s[p] == '/')
{
p++;
if(s[p - 1] == '*')
{
r *= expresii();
}
else
{
r /= expresii();
}
}
return r;
}
///adunari si scaderi
int termeni()
{
int r = factori();
while(s[p] == '+' or s[p] == '-')
{
p++;
if(s[p - 1] == '+')
{
r += factori();
}
else
{
r -= factori();
}
}
return r;
}
int main()
{
p = 0;
cin >> s;
cout << termeni() << '\n';
return 0;
}