PTA 1054 求平均值 (20 分) 测试点3

摺耳喵 2019-11-25 11:35:57
https://pintia.cn/problem-sets/994805260223102976/problems/994805272659214336
又是一个让人崩溃的测试点。。。。
#include <iostream>
#include <string>
using namespace std;
int main() {
int N, count = 0;
double sum = 0;
cin >> N;
while (N--) {
string A;
cin >> A;
try { //判断是否能转换为float类型,若不能则进行异常处理
float a = stof(A);
//判断合法区间[-1000,1000] || 判断精度 ||判断转换为浮点型的字符串是否是原来的字符串(像2.2a会被转换成2.20000....,且不会报错)
if (a < -1000 || a>1000 || A.size() - A.find('.') > 3 || to_string(a).compare(0, A.size(), A) != 0) {
cout << "ERROR: " << A << " is not a legal number" << endl;
continue;
}
count++;
sum += a;
}
catch (...) {
cout << "ERROR: " << A << " is not a legal number" << endl;
}
}
if (!count)
cout << "The average of 0 numbers is Undefined" << endl;
else if (count == 1) //测试点2
printf("The average of 1 number is %.2f\n", sum);
else
printf("The average of %d numbers is %.2f\n", count, sum / count);
return 0;
}
...全文
693 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
透透明明 2021-05-03
  • 打赏
  • 举报
回复
这道题测试点3 数据像12.也算正确数据,小数点在最后也算正确数据
Fatebinder 2020-11-22
  • 打赏
  • 举报
回复
测试点3应该卡的是只有一个数符合要求的单数情况,输出字符串的member没有s 题目也没有卡.-123 或.123-这种情况
摺耳喵 2019-11-26
  • 打赏
  • 举报
回复
引用 1 楼 寻开心的回复:
小数点后两位的精度是如何保障的?
应该是四舍五入而不是截断吧
不是精度问题,是截断的
寻开心 2019-11-26
  • 打赏
  • 举报
回复
小数点后两位的精度是如何保障的?
应该是四舍五入而不是截断吧
摺耳喵 2019-11-26
  • 打赏
  • 举报
回复
引用 3 楼 早打大打打核战争 的回复:
应该是这一条的问题:最多精确到小数点后 2 位,如果输入数据没有小数点也完全可以是合法的,比如999,然后你这么判断A.size() - A.find('.') > 3就会得到4>3的结果

谢谢你说的问题我确实没有考虑到,判断条件我做了修改,但是。。。还是不行
if (a < -1000 || a>1000 
|| A.find('.') != string::npos && A.size() - A.find('.') > 3
|| to_string(a).compare(0, A.size(), A) != 0)
  • 打赏
  • 举报
回复
应该是这一条的问题:最多精确到小数点后 2 位,如果输入数据没有小数点也完全可以是合法的,比如999,然后你这么判断A.size() - A.find('.') > 3就会得到4>3的结果

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧