Pagini recente » Cod sursa (job #843871) | Cod sursa (job #538863) | Cod sursa (job #2175776) | Cod sursa (job #1642260) | Cod sursa (job #1430097)
#include <fstream>
#define DIM 100010
using namespace std;
ifstream fin ("evaluare.in" );
ofstream fout("evaluare.out");
int N, M, i; char S[DIM];
int expresion();
int term();
int factor();
int number();
int expresion(){
int rez = term();
while(S[i] == '+' || S[i] == '-'){
switch(S[i])
{
case '+': {i ++; rez += term(); break;}
case '-': {i ++; rez -= term(); break;}
}
}
return rez;
}
int term(){
int rez = factor();
while(S[i] == '*' || S[i] == '/'){
switch(S[i])
{
case '*': {i ++; rez *= factor(); break;}
case '/': {i ++; rez /= factor(); break;}
}
}
return rez;
}
int factor(){
int rez;
if(S[i] == '('){i ++; rez = expresion(); i ++;}
else { rez = number();}
return rez;
}
int number(){
int nr = 0;
while(S[i] >= '0' && S[i] <= '9')
nr = nr * 10 + (S[i++] - '0');
return nr;
}
int main(){
fin >> S + 1; i = 1;
fout << expresion();
return 0;
}