Pagini recente » Cod sursa (job #16772) | Cod sursa (job #821740) | Cod sursa (job #188985) | Cod sursa (job #1038417) | Cod sursa (job #1823141)
#include <fstream>
#include <string.h>
using namespace std;
char s[100005];
int getNumber(const int& n, int& i){
int ret = 0;
while(s[i] >= '0' && s[i] <= '9' && i <= n){
ret = ret * 10 + (s[i] - '0');
i++;
}
return ret;
}
int getSum(const int& n, int& i){
int 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("home.in");
ofstream fout("home.out");
fin>>s + 2;
int n = strlen(s + 2) + 2;
s[1] = '(';
s[n + 2] = ')';
int i = 1;
fout<<getSum(n, i);
return 0;
}