Pagini recente » Cod sursa (job #1245585) | Cod sursa (job #2602402) | Cod sursa (job #2368756) | Cod sursa (job #2424692) | Cod sursa (job #2165744)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("evaluare.in");
ofstream fo("evaluare.out");
const int N = 1e5 + 5;
char str[N];
int ptr;
static int eval();
static int priority_1();
static int num();
static int eval() {
int ant = priority_1();
bool flag;
do {
flag = false;
switch (str[ptr++]) {
case '+': {
ant+= priority_1();
flag = true;
break; }
case '-': {
ant-= priority_1();
flag = true;
break; } } }
while (flag);
return ant; }
static int priority_1() {
int ant = num();
bool flag;
do {
flag = false;
switch (str[ptr]) {
case '*': {
ptr+= 1;
ant*= num();
flag = true;
break; }
case '/': {
ptr+= 1;
ant/= num();
flag = true;
break; } } }
while (flag);
return ant; }
static int num() {
if (str[ptr] == '(') {
ptr+= 1;
return eval(); }
int ant = 0, mul = 1;
while (str[ptr] == '-') {
ptr+= 1;
mul*= -1; }
while (isdigit(str[ptr])) {
ant = ant * 10 + (str[ptr] - '0');
ptr+= 1; }
return ant * mul; }
int main() {
fi >> str;
fo << eval() << endl;
return 0; }