Pagini recente » Cod sursa (job #792971) | Cod sursa (job #1723637) | Cod sursa (job #2950395) | Cod sursa (job #2951894) | Cod sursa (job #1379148)
#include <fstream>
#define NMax 100010
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int ind = 1;
char sir[NMax];
int fact();
int term();
int eval()
{
int res = fact();
while (sir[ind] == '+' || sir[ind] == '-') {
if (sir[ind] == '+') {
ind++;
res += fact();
}
else {
ind++;
res -= fact();
}
}
return res;
}
int fact()
{
int res = term();
while (sir[ind] == '*' || sir[ind] == '/') {
if (sir[ind] == '*') {
ind++;
res *= term();
}
else {
ind++;
res /= term();
}
}
return res;
}
int term()
{
int res = 0;
if (sir[ind] == '(') {
ind++;
res = eval();
ind++;
}
else {
while (sir[ind] >= '0' && sir[ind] <= '9') {
res = res * 10 + (sir[ind] - '0');
ind++;
}
}
return res;
}
int main()
{
f.getline(sir + 1, 100010);
g << eval();
}