Pagini recente » Cod sursa (job #2915042) | Cod sursa (job #1062221) | Cod sursa (job #2952873) | Cod sursa (job #487094) | Cod sursa (job #2790973)
#include <fstream>
#define SMAX 100000
using namespace std;
int i;
char s[SMAX + 1];
int op2();
int formare_numar (){
int nr;
if (s[i] == '(') {
i++; //sar peste prima paranteza (
nr = op2();
i ++; // sar peste a doua paranteza )
}
else {
nr = 0;
while (isdigit (s[i])){
nr = nr * 10 + s[i] - '0';
i++;
}
}
return nr;
}
int op1 (){ // prioritate 1
int rez;
rez = formare_numar();
while (s[i] == '*' || s[i] == '/'){
if (s[i] == '*'){
i++;
rez *= formare_numar();
}
else if (s[i] == '/'){
i++;
rez /= formare_numar();
}
}
return rez;
}
int op2 () {// prioritate 2
int rez;
rez = op1();
while (s[i] == '+' || s[i] == '-'){
if (s[i] == '+'){
i ++;
rez += op1();
}
else if (s[i] == '-'){
i++;
rez -= op1();
}
}
return rez;
}
int main(){
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
fin >> s;
fout << op2();
return 0;
}