Pagini recente » Cod sursa (job #2976637) | Cod sursa (job #1225853) | Cod sursa (job #3297984) | Cod sursa (job #2610323) | Cod sursa (job #3324578)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 2005;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int idx;
string s;
long termen();
long factor();
long evalExpresie()
{
// Expresie = a+b+c+...
int suma = termen();
while (s[idx] == '+' || s[idx] == '-')
{
if (s[idx] == '+')
{
idx++;
suma = suma + termen();
}
else
{
idx++;
suma = suma - termen();
}
}
return suma;
}
long termen()
{
int produs = factor();
while (s[idx] == '*' || s[idx] == '/')
{
if (s[idx] == '*')
{
idx++;
produs = produs * factor();
}
else
{
idx++;
produs = produs / factor();
}
}
return produs;
}
long factor()
{
long rezultat = 0;
if (s[idx] == '(')
{
idx++;
rezultat = evalExpresie();
idx++;
}
else
{
while (s[idx] >= '0' && s[idx] <= '9')
{
rezultat = rezultat * 10 + s[idx] - '0';
idx++;
}
}
return rezultat;
}
int main()
{
fin >> s;
fout << evalExpresie() << '\n';
}