近期編輯:rk42745417、liu92112711 ...看更多 |
#include <bits/stdc++.h> using namespace std; string input; double f(int l, int r) { int tmp = 0; for(int i = r; i >= l; i--) { if(input[i]=='(') tmp++; if(input[i]==')') tmp--; if(input[i]=='+'&&tmp==0) return f(l, i-1)+f(i+1, r); if(input[i]=='-'&&tmp==0) return f(l, i-1)-f(i+1, r); } tmp = 0; for(int i = r; i >= l; i--) { if(input[i]=='(') tmp++; if(input[i]==')') tmp--; if(input[i]=='*'&&tmp==0) return f(l, i-1)*f(i+1, r); if(input[i]=='/'&&tmp==0) return f(l, i-1)/f(i+1, r); } if(input[l]=='('&&input[r]==')') return f(l+1, r-1); if(input[l]==' '&&input[r]==' ') return f(l+1, r-1); if(input[l]=='(') return f(l+1, r); if(input[r]==')') return f(l, r-1); if(input[l]==' ') return f(l+1, r); if(input[r]==' ') return f(l, r-1); int num=0; for(int i=l; i<=r; i++) num = (double)num*10+input[i]-'0'; return num; } int main(){ while(getline(cin, input)) printf("%g\n", f(0, input.length()-1)); } |
目前沒有資料連到「四則運算」。