Pagini recente » Cod sursa (job #2664574) | Cod sursa (job #936422) | Cod sursa (job #2135082) | Cod sursa (job #1390435) | Cod sursa (job #1659489)
#include <fstream>
#include <cstring>
using namespace std;
int expresie();
int produs();
int getnr();
char v[100010];
int c = 0;
int main()
{
ifstream in("evaluare.in");
in >> v;
v[strlen(v)] = ')';
ofstream out("evaluare.out");
out << expresie();
return 0;
}
int produs() {
int n = getnr();
char op;
while (v[c] == '*' || v[c] == '/') {
op = v[c++];
if (op == '*') {
n *= getnr();
}
else
n /= getnr();
}
return n;
}
int getnr() {
if (v[c] == '(') {
c++;
return expresie();
}
int n = 0;
while ('0' <= v[c] && v[c] <= '9') {
n *= 10;
n += v[c] - '0';
c++;
}
return n;
}
int expresie() {
int n = produs(), m;
char op;
while (v[c] != ')') {
op = v[c++];
m = produs();
if (op == '+') {
n += m;
}
else {
n -= m;
}
}
c++;
return n;
}