zl程序教程

您现在的位置是:首页 >  其他

当前栏目

1108 Finding Average (20 分)【难度: 简单 / 模拟】

模拟 简单 20 难度 average
2023-09-11 14:15:52 时间

在这里插入图片描述
https://pintia.cn/problem-sets/994805342720868352/problems/994805360777347072

#include<bits/stdc++.h>
using namespace std;
int n,cnt;
double sum;
string s;
bool solve(string s)
{
    int t=0;
    string temp=s;
    if(temp[0]=='-') temp=temp.substr(1);
    if(!temp.size()) return false;
    for(int i=0;i<temp.size();i++)
    {
        if(!isdigit(temp[i])&&temp[i]!='.') return false;//有其他的字符
        if(temp[i]=='.') t++;
    }
    if(t>1) return false;//小数点个数大于1
    if(t&&s.size()-s.find('.')-1>2) return false;//精度大于2
    double a=stod(s);
    if(a<-1000||a>1000) return false;
    cnt++,sum+=a;
    return true;
}
int main(void)
{
    cin>>n;
    for(int i=0;i<n;i++) 
    {
        cin>>s;
        if(!solve(s)) printf("ERROR: %s is not a legal number\n",s.c_str());
    }
    if(!cnt) printf("The average of 0 numbers is Undefined");
    else if(cnt==1) printf("The average of 1 number is %.2lf",sum);
    else printf("The average of %d numbers is %.2lf",cnt,sum/cnt);
    return 0;
}