Pagini recente » Cod sursa (job #3223388) | Cod sursa (job #2664379) | Cod sursa (job #305409) | Cod sursa (job #879046) | Cod sursa (job #3140424)
#include <iostream>
#include <fstream>
#include <cctype>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string ex;
int poz = 0;
int getnr();
int divmul();
int plusminus();
int main() {
getline(fin, ex);
fout << plusminus();
return 0;
}
int getnr() {
int x = 0;
if (ex[poz] == '(') {
poz++;
x = plusminus();
poz++;
}
else
while (isdigit(ex[poz]))
x = x*10 + ex[poz++] - '0';
//cout << "getnr: " << x << '\n';
return x;
}
int divmul() {
int x = getnr();
char curr;
while ((curr = ex[poz]) == '*' || curr == '/') {
poz++;
int y = getnr();
if (curr == '*')
x *= y;
else
x /= y;
}
//cout << "divmul: " << x << '\n';
return x;
}
int plusminus() {
int x = divmul();
char curr;
while ((curr = ex[poz]) == '+' || curr == '-') {
poz++;
int y = divmul();
if (curr == '+')
x += y;
else
x -= y;
}
//cout << "plusminus: " << x << '\n';
return x;
}