zoukankan      html  css  js  c++  java
  • hdu 1237 简单计算器

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237

    题目大意:一个简单的计算器,只要判断好运算顺序即可。先加减后乘除~建议一个比较简单的想法,输入一个数字,再输入一个字符,接下去对字符进行判断,分别将数字存入栈中,最后将栈的数进行整理。这样做下去还可以,不过还是wa了几次!

    提供测试数据:0 + 1 估计大多数都是忘记考虑这种情况了~

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <stack>
     4 #include <cstring>
     5 using namespace std;
     6 int main ()
     7 {
     8     stack<double>s;
     9     int n;
    10     double m;
    11     char ch,str;
    12     while (scanf("%d%c",&n,&ch)!=EOF)
    13     {
    14         if (n==0&&ch=='
    ')
    15         break;
    16         s.push(n);
    17         scanf("%c %d",&ch,&n);
    18         switch (ch)
    19             {
    20             case '+':
    21             {
    22                 s.push((double)n);
    23                 break;
    24             }
    25             case '-':
    26             {
    27                 s.push(-(double)n);
    28                 break;
    29             }
    30             case '*':
    31             {
    32                 m=s.top();
    33                 s.pop();
    34                 m=m*(double)n;
    35                 s.push(m);
    36                 break;
    37             }
    38             case '/':
    39             {
    40                 m=s.top();
    41                 s.pop();
    42                 m=m/(double)n;
    43                 s.push(m);
    44                 break;
    45             }
    46             }
    47         while (scanf("%c",&ch)!=EOF)
    48         {
    49             if (ch=='
    ')
    50                 break;
    51             scanf("%c%d",&str,&n);
    52             switch (str)
    53             {
    54             case '+':
    55             {
    56                 s.push((double)n);
    57                 break;
    58             }
    59             case '-':
    60             {
    61                 s.push(-(double)n);
    62                 break;
    63             }
    64             case '*':
    65             {
    66                 m=s.top();
    67                 s.pop();
    68                 m=m*(double)n;
    69                 s.push(m);
    70                 break;
    71             }
    72             case '/':
    73             {
    74                 m=s.top();
    75                 s.pop();
    76                 m=m/(double)n;
    77                 s.push(m);
    78                 break;
    79             }
    80             }
    81 
    82         }
    83         double sum=0;
    84         while (!s.empty())
    85         {
    86             //cout<<s.top();
    87             sum+=s.top();
    88             s.pop();
    89         }
    90         printf ("%.2lf
    ",sum);
    91     }
    92 }
    View Code
  • 相关阅读:
    linux系统下MySQL表名区分大小写问题
    linux下查看Mysql默认编码、修改默认编码
    mysql的下载及安装(windows)
    数据库进阶
    mysql练习
    数据库基础
    jQuery
    JavaScript 基础学习(二)
    344.Reverse String
    计蒜客课程数据结构(顺序表)
  • 原文地址:https://www.cnblogs.com/qq-star/p/3880596.html
Copyright © 2011-2022 走看看