読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

aoj 0087

Aizu Online Judge c++

逆ポーランド記法 | Aizu Online Judge
やるだけ

vector<string> split(const string &str, char delim)
{
  istringstream iss(str); string tmp; vector<string> res;
  while(getline(iss, tmp, delim)) res.push_back(tmp);
  return res;
}

int main()
{
  string s;
  while(getline(cin,s))
  {
    stack<double> a;
    auto v = split(s,' ');
    for(auto c : v)
    {
      int n;
      if(sscanf(c.c_str(),"%d",&n)) a.push(n);
      else
      {
        double ans;
        double x = a.top(); a.pop();
        double y = a.top(); a.pop();
        switch(c[0])
        {
          case '+':
            ans=y+x;
            break;
          case '-':
            ans=y-x;
            break;
          case '*':
            ans=y*x;
            break;
          case '/':
            ans=1.0*y/x;
            break;
        }
        a.push(ans);
      }
    }
    printf("%.8lf\n",a.top());
  }
  return 0;
}