Pagini recente » Cod sursa (job #1456506) | Cod sursa (job #2526325) | Cod sursa (job #1701197) | Cod sursa (job #1414434) | Cod sursa (job #2850910)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string sir;
int poz = 0;
int eval();
int numar();
int inmultiri_impartiri();
int numar()
{
if(sir[poz] == '(')
{
poz++;
int paranteza = eval();
poz++;
return paranteza;
}
int nr = 0;
while(sir[poz] >= '0' && sir[poz] <= '9')
{
nr = nr * 10 + (sir[poz] - '0');
poz++;
}
return nr;
}
int inmultiri_impartiri()
{
int raspuns = numar();
while(sir[poz] == '*' || sir[poz] == '/')
{
if(sir[poz] == '*')
{
poz++;
raspuns = raspuns * numar();
}
else
{
poz++;
raspuns = raspuns / numar();
}
}
return raspuns;
}
int eval()
{
int raspuns = inmultiri_impartiri();
while(sir[poz] == '-' || sir[poz] == '+')
{
if(sir[poz] == '-')
{
poz++;
raspuns = raspuns - inmultiri_impartiri();
}
else
{
poz++;
raspuns = raspuns + inmultiri_impartiri();
}
}
return raspuns;
}
int main()
{
in >> sir;
out << eval() << "\n";
return 0;
}