Pagini recente » Cod sursa (job #910673) | Cod sursa (job #2209615) | Cod sursa (job #2894176) | Cod sursa (job #236921) | Cod sursa (job #3292545)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "evaluare.in" );
ofstream fout( "evaluare.out" );
int expr();
int ter();
int fact();
int ct();
int i;
string s;
int ct() {
int ans = 0;
while( isdigit( s[i] ) )
ans = ans * 10 + s[i++] - '0';
return ans;
}
int expr() {
int ans = ter();
while( s[i] == '+' || s[i] == '-' ) {
if( s[i] == '+' ) {
i++;
ans += ter();
} else {
i++;
ans -= ter();
}
}
return ans;
}
int ter() {
int ans = fact();
while( s[i] == '*' || s[i] == '/' ) {
if( s[i] == '*' ) {
i++;
ans *= fact();
} else {
i++;
ans /= fact();
}
}
return ans;
}
int fact() {
int ans;
if( s[i] == '(' ) { //avem expresie
i++;
ans = expr();
i++;
} else
ans = ct();
return ans;
}
int main() {
getline( fin, s );
fin >> s;
fout << expr();
return 0;
}