Pagini recente » Cod sursa (job #2680881) | Cod sursa (job #89982) | Cod sursa (job #1846320) | Cod sursa (job #2637824) | Cod sursa (job #1823165)
#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);
i++;
}else{
ret = getNumber(n, i);
}
while(strchr("*/+-)", s[i]) != NULL && i <= n){
switch(s[i]){
case '*':
i++;
ret = ret * getNumber(n, i);
break;
case '/':
i++;
ret = ret / getNumber(n, i);
break;
case '+':
i++;
ret = ret + getSum(n, i);
break;
case '-':
i++;
ret = ret - getSum(n, i);
break;
case ')':
i++;
return ret;
break;
}
}
return ret;
}
int main(){
ifstream fin("home.in");
ofstream fout("home.out");
fin>>s + 1;
int n = strlen(s + 1) + 1;
s[0] = '(';
s[n] = ')';
int i = 0;
fout<<getSum(n, i);
return 0;
}