Pagini recente » Cod sursa (job #1502812) | Winter Challenge, Clasament pentru clasele IX-X | Cod sursa (job #2729512) | Cod sursa (job #340036) | Cod sursa (job #1823144)
#include <fstream>
#include <string.h>
using namespace std;
char s[100005];
long getNumber(const int& n, int& i){
long ret = 0;
while(s[i] >= '0' && s[i] <= '9' && i <= n){
ret = ret * 10 + (s[i] - '0');
i++;
}
return ret;
}
long getSum(const int& n, int& i){
long ret;
if(s[i] == '('){
i++;
ret = getSum(n, i);
}else{
ret = getNumber(n, i);
}
if(s[i] == ')'){
return ret;
}
while((s[i] == '*' || s[i] == '/') && i <= n){
switch(s[i]){
case '*':
i++;
ret = ret * getNumber(n, i);
break;
case '/':
i++;
ret = ret / getNumber(n, i);
break;
}
}
if(i > n){
return ret;
}
switch(s[i]){
case '+':
i++;
ret = ret + getSum(n, i);
break;
case '/':
i++;
ret = ret - getSum(n, i);
break;
}
i++;
return ret;
}
int main(){
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin>>s + 1;
int n = strlen(s + 1);
int i = 1;
fout<<getSum(n, i);
return 0;
}