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

    简单计算器

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 22535    Accepted Submission(s): 8146


    Problem Description
    读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
     
    Input
    测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
     
    Output
    对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
     
    Sample Input
    1 + 2 4 + 2 * 5 - 7 / 11 0
     
    Sample Output
    3.00 13.36
     

    不需要堆栈这么复杂,因为没有括号这些东西。然后因为是有空格在中间的,所以可以用cin来读取对应的符号和数字(注意区别XCOJ上的那题,因为中间没有空格所以要用字符串的方法去处理)

    然后附上代码,难度不大:

    #include <iostream>
    #include<math.h>
    #include <iomanip>
    #include<cstdio>
    #include<string>
    #include<map>
    #include<vector>
    #include<list>
    #include<algorithm>
    #include<stdlib.h>
    #include<iterator>
    #include<sstream>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    //1250
    int main()
    {
        double a;
        char c;
        double num[10000];
        int pos;
        double sum=0;
    
    
        while(cin>>a)
        {
    
    
           if(a==0&&getchar()=='
    ')//注意会有0+0 的情况 所以要判定是不是只有一个0 是一个0的话才结束输入。
            {
                break;
            }
            memset(num,0,sizeof(num));
            pos=0;
            sum=0;
            num[pos]=a;
    
    
    
            while(cin>>c>>a)
            {
                if(c=='*')
                {
                    num[pos]=num[pos]*a;
                   // continue;
                }
                if(c=='/')
                {
                    num[pos]=num[pos]/a;
    //continue;
                }
                if(c=='+')
                {
                    pos++;
                    num[pos]=a;
                   // continue;
                }
                if(c=='-')
                {
                    pos++;
                    num[pos]=-a;
                    //continue;
                }
                if(getchar()=='
    ')
                {
                    break;
                }
            }
            for(int i=0;i<pos+1;i++)
            {
                //cout<<num[i]<<endl;
                sum=sum+num[i];
            }
            cout<<fixed<<setprecision(2)<<sum<<endl;
    
        }
        //system("pause");
        return 0;
    }
  • 相关阅读:
    深入了解css的行高Line Height属性
    【C++】函数指针
    【C++】常用知识点
    将数字转化为液晶显示屏的样子
    【多媒体】PCM
    【Android】网络下载图片&SD卡文件存储
    CPU 缓存(Cache)
    【C++】typename
    【多媒体】音频格式
    【Android】图片的异步加载
  • 原文地址:https://www.cnblogs.com/William-xh/p/7493328.html
Copyright © 2011-2022 走看看