Pagini recente » Cod sursa (job #551399) | Cod sursa (job #2952186) | Cod sursa (job #2649283) | Cod sursa (job #2120871) | Cod sursa (job #2737729)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int maxn = 100005;
char T[maxn];
int i = 1;
int factor();
int eval();
int numar()
{
if(T[i] == '(')
{
i++;
int aux = eval();
i++;
return aux;
}
int nr = 0;
while(isdigit(T[i]))
nr = nr * 10 + T[i++] - '0';
return nr;
}
int factor()
{
int rez = numar();
while(T[i] == '*' || T[i] == '/')
{
if(T[i] == '*')
{
i++;
rez = rez * numar();
}
else
{
i++;
rez = rez / numar();
}
}
return rez;
}
int eval()
{
int rez = factor();
while(T[i] == '-' || T[i] == '+')
{
int semn = 1;
if(T[i] == '-')
semn = -1;
i++;
rez = rez + factor() * semn;
}
return rez;
}
int main()
{
in.getline(T + 1, maxn);
out << eval();
return 0;
}