我要加入

巴哈程式競技、電資社團

會長:N0983658212 / 美好的過去漸行漸遠開設日:2020-11-27 22:44:16

  • EXP

  • 資金226803  
  • 招募制度:審核制
  • 成員:310 人
  • 昨日人氣:0

四則運算

推上精選編輯

近期編輯:rk42745417liu92112711 ...看更多

#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));
}

公會首頁

主選單
程式相關
  教學
  小作品
  程式範例
競技程式(競程)
  一些網站
  學習資源
資安相關
年會介紹
公會 Rule
  Wiki 百科
關聯資料

目前沒有資料連到「四則運算」。