Pagini recente » Cod sursa (job #901167) | Cod sursa (job #2635773) | Cod sursa (job #2635363) | Cod sursa (job #3297471)
#include <bits/stdc++.h>
using namespace std;
string s;
int n;
int idx;
int getNumber() {
int a = 0;
while ( idx < n && isdigit( s[idx] ) ) {
a = a * 10 + s[idx] - '0';
idx ++;
}
return a;
}
int expresie();
int termen();
int factor();
int expresie() {
int a = termen();
while ( idx < n && (s[idx] == '+' || s[idx] == '-') ) {
if ( s[idx] == '+' ) {
idx ++;
a += termen();
} else {
idx ++;
a -= termen();
}
}
return a;
}
int termen() {
int a = factor();
while ( idx < n && (s[idx] == '*' || s[idx] == '/') ) {
if ( s[idx] == '*' ) {
idx ++;
a *= factor();
} else {
idx ++;
a /= factor();
}
}
return a;
}
int factor() {
if ( s[idx] == '(' ) {
idx ++;
int a = expresie();
idx ++;
return a;
}
return getNumber();
}
int main() {
ifstream fin( "evaluare.in" );
ofstream fout( "evaluare.out" );
fin >> s;
n = s.size();
fout << expresie();
return 0;
}