Pagini recente » Cod sursa (job #2762287) | Cod sursa (job #2587200) | Cod sursa (job #327189) | Cod sursa (job #2418348) | Cod sursa (job #1995580)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char expr[100001], * item ;
int lgExpr;
void citire(){
in >> expr;
lgExpr = strlen(expr) - 1;
}
long factor();
long termen();
long rezolvare(){
long solutie = termen();
while(* item == '-' || * item == '+'){
if(* item == '-'){
item++;
solutie -= termen();
}
else if(* item == '+'){
item++;
solutie += termen();
}
}
return solutie;
}
long termen(){
long factorCal = factor();
while(* item == '*' || * item == '/'){
if(* item == '/'){
item++;
factorCal /= factor();
}
else if(* item == '*'){
item++;
factorCal *= factor();
}
}
return factorCal;
}
long factor(){
long calcul = 0;
if(* item == '('){
item++;
calcul = rezolvare();//o subexpresie, ...(....)...
item++;
}
else{
while(* item >= '0' && * item <= '9'){
calcul = calcul * 10 + (* item -'0');
item++;
}
}
return calcul;
}
int main(){
citire();
item = expr;
out << rezolvare();
return 0;
}