用了39分钟,满分
// 1108 Finding Average (20 分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <bits/stdc++.h>
using namespace std;
vector<double> legal;
int main()
{
#ifndef ONLINE_JUDGE
FILE* s;
freopen_s(&s, "in.txt", "r", stdin);
#endif // !ONLINE_JUDGE
int n;
cin >> n;
string t;
for (int i = 0; i < n; i++) {
double flag = true;
cin >> t;
int count_dot = 0;
int dot_pos=t.size()-1;
for (int i = 0; i < t.size(); i++) {
if (t[i] == '.') {
count_dot++;
dot_pos = i;
}
if (isalpha(t[i])) {
flag = false;
break;
}
}
if (!(count_dot <= 1 && t.size() - 1 - dot_pos <= 2)) {
flag = false;
}
if (flag) {
double a = stod(t);
if (a >= -1000.00 && a <= 1000.00) {
legal.push_back(a);
}
else {
flag = false;
}
}
if (!flag) {
printf("ERROR: %s is not a legal number\n", t.c_str());
}
//考虑这个相关的值是否合法
}
if (legal.size() == 0) {
printf("The average of 0 numbers is Undefined\n");
}
else if (legal.size() == 1) {
printf("The average of 1 number is %.2lf\n",legal[0]);
}
else {
double avg=0;
for (int i = 0; i < legal.size(); i++) {
avg += legal[i];
}
avg = avg / legal.size();
printf("The average of %d numbers is %.2lf\n", legal.size(), avg);
}
return 0;
}