Pagini recente » Cod sursa (job #2049209) | Cod sursa (job #816243) | Cod sursa (job #1412472) | Cod sursa (job #1185360) | Cod sursa (job #1181807)
#include<fstream>
#include<string>
using namespace std;
ifstream fin( "evaluare.in" );
ofstream fout( "evaluare.out" );
int i;
int expr(), termen();
string s;
int nr() {
int p, sol = 0;
p = 1;
if ( s[ i ] == '-' ) {
p = -1;
++ i;
}
if ( s[ i ] == '(' ) {
++ i;
return p * expr();
}
while ( s[ i ] >= '0' && s[ i ] <= '9' ) {
sol *= 10;
sol += s[ i ] - '0';
++ i;
}
return p * sol;
}
int expr() {
int sum;
sum = termen();
while( s[ i ] == '+' || s[ i ] == '-' ) {
if ( s[ i ] == '+' ) {
++ i;
sum += termen();
} else {
++ i;
sum -= termen();
}
}
++ i;
return sum;
}
int termen() {
int rez;
rez = nr();
while ( s[ i ] == '*' || s[ i ] == '/' ) {
if ( s[ i ] == '*' ) {
++ i;
rez *= nr();
} else {
++ i;
rez /= nr();
}
}
return rez;
}
int main()
{
fin>>s;
i = 0;
fout<<expr()<<'\n';
fin.close();
fout.close();
return 0;
}