华为机试HJ105:记负均正II

简介: 华为机试HJ105:记负均正II

题目描述:

从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0

本题有多组输入数据,输入到文件末尾,请使用while(cin>>)读入

数据范围小于1e6

输入描述:

输入任意个整数,每行输入一个。

输出描述:

输出负数个数以及所有非负数的平均值

示例:

输入:

-13

-4

-7


输出:

3

0.0


解题思路:

本题和之前的记负均正I题类似。将输入的数据分成负数和非负数,先输出负数数组的尺寸,再判断非负数数组是否尺寸为0,若为0直接输出0.0,否则它会输出nan,若不为0则用mean计算均值,再用setprecision控制小数点位数,完毕。

测试代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
double mean(vector <int>& data) {
  double ans = 0.0;
  for (int i = 0; i < data.size(); i++) {
    ans += data[i];
  }
  ans = ans / data.size();
  return ans;
}
int main()
{
    int number;
    vector<int> pos;
    vector<int> neg;
    while(cin>>number)
    {
        if(number>=0)
            pos.push_back(number);
        else if(number<0)
            neg.push_back(number);
    }
    double result = mean(pos);
    cout<<neg.size()<<endl;
    if(pos.size()==0)
    {
        cout<<"0.0"<<endl;
    }
    else{
        cout<<fixed<<setprecision(1)<<result<<endl;
    }
    return 0;
}
相关文章
|
Serverless 测试技术
华为机试HJ97:记负均正
华为机试HJ97:记负均正
130 1
华为机试HJ96:表示数字
华为机试HJ96:表示数字
109 1
华为机试HJ107:求解立方根
华为机试HJ107:求解立方根
148 1
华为机试HJ103:Redraiment的走法
华为机试HJ103:Redraiment的走法
183 2
华为机试HJ95:人民币转换
华为机试HJ95:人民币转换
130 1
|
测试技术
华为机试HJ77:火车进站
华为机试HJ77:火车进站
127 1
|
机器学习/深度学习 算法 数据安全/隐私保护
华为机试HJ28:素数伴侣
华为机试HJ28:素数伴侣
103 0
华为机试HJ75:公共子串计算
华为机试HJ75:公共子串计算
华为机试HJ56:完全数计算
华为机试HJ56:完全数计算