Pagini recente » Cod sursa (job #458810) | Borderou de evaluare (job #3150650) | Cod sursa (job #2619873) | Cod sursa (job #2563659) | Cod sursa (job #3139012)
#include <fstream>
using namespace std;
ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");
char sir[100001];
int indice;
int Expresie();
int Constanta ()
{
int valoare = 0;
while ('0' <= sir[indice] && sir[indice] <= '9')
valoare = 10 * valoare + (sir[indice++] - '0');
return valoare;
}
int Factor ()
{
int factor;
if (sir[indice] == '(')
indice++ , factor = Expresie() , indice++;
else
factor = Constanta();
return factor;
}
int Termen ()
{
int termen = Factor();
while (sir[indice] == '*' || sir[indice] == '/')
switch (sir[indice])
{
case '*': indice++ , termen *= Factor();
break;
case '/': indice++ , termen /= Factor();
break;
}
return termen;
}
int Expresie ()
{
int rezultat = Termen();
while (sir[indice] == '+' || sir[indice] == '-')
switch (sir[indice])
{
case '+': indice++ , rezultat += Termen();
break;
case '-': indice++ , rezultat -= Termen();
break;
}
return rezultat;
}
int main ()
{
cin >> sir;
cout << Expresie();
cout.close(); cin.close();
return 0;
}