zoukankan      html  css  js  c++  java
  • 1108 Finding Average (20 分)

    1. 以字符串形式输入每个数,然后分别判断是否合法,不合法时输出错误信息,合法时对其进行累加,最后输出平均数。
    2. 判断是否合法的过程:
      (1) 如果字符串以负号'-'开头,那么先把它去掉,去掉后如果字符串长度为0,那么直接认为不合法(虽然数据里似乎没有只存在负号的字符串);
      (2) 使用一个变量 dotPos 记录小数点的下标,初值为-1,然后遍历整个字符串。如果遍历过程中出现了小数点或者0~9以外的字符,那么返回不合法:由于小数点只能存在一个,因此当前位是小数点时如果dotPos不等于初值-1的话就直接返回不合法,否则把dotPos赋值为当前位置。
      (3) 遍历完整个字符串后,如果dotPos不为-1 (即存在小数点)、且dotPos位置之后还存在至少两个字符位时,说明精度超过两位小数,直接返回不合法;
      (4) 最后,将字符串转换为double型,判断其绝对值是否超过了1000,是的话说明不合法,否则合法。

    注意点

    注意最后输出时“number"的单复数,当合法的数的个数为0或者不小于2时,使用复数numbers,否则用单数number。

    int n;
    
    bool check(string s)
    {
        int i=0;
        if(s[0] == '-') i++;
        int pos=s.find('.');
        for(;i<s.size();i++)
            if(i==pos || isdigit(s[i]))
                continue;
            else
                return false;
            
        if(pos != string::npos && s.substr(pos+1).size() > 2) return false;
    
        double x=stod(s);
        if(fabs(x) > 1000) return false;
    
        return true;
    }
    
    int main()
    {
        cin>>n;
    
        vector<double> res;
        for(int i=0;i<n;i++)
        {
            string s;
            cin>>s;
    
            if(check(s)) res.pb(stod(s));
            else printf("ERROR: %s is not a legal number
    ",s.c_str());
        }
    
        double sum=0;
        for(int i=0;i<res.size();i++)
            sum+=res[i];
        if(res.size() == 0)
            printf("The average of 0 numbers is Undefined
    ");
        else if(res.size() == 1)
            printf("The average of 1 number is %.2f",sum);
        else
            printf("The average of %d numbers is %.2f
    ",res.size(),sum/res.size());
    
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    WPS项目编号问题
    Allegro转换PADS终极篇(转载)
    Allegro16.3约束设置 (转载)
    转:浮点数在计算机中存储方式
    转:十进制小数转化为二进制小数
    变量的存储类别 内部函数和外部函数
    关于Nios II的启动分析(转载)
    Allegro学习(http://www.asmyword.com/forum.php?mod=forumdisplay&fid=86)
    cf1113 C. Sasha and a Bit of Relax
    D. Jongmah cf1110
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14429098.html
Copyright © 2011-2022 走看看