[PAT-乙级]1054.求平均值

来源:互联网 发布:5位电话 知乎 编辑:程序博客网 时间:2024/04/30 02:51

1054. 求平均值 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。

输入格式:

输入第一行给出正整数N(<=100)。随后一行给出N个实数,数字间以一个空格分隔。

输出格式:

对每个非法输入,在一行中输出“ERROR: X is not a legal number”,其中X是输入。最后在一行中输出结果:“The average of K numbers is Y”,其中K是合法输入的个数,Y是它们的平均值,精确到小数点后2位。如果平均值无法计算,则用“Undefined”替换Y。如果K为1,则输出“The average of 1 number is Y”。

输入样例1:
75 -3.2 aaa 9999 2.3.4 7.123 2.35
输出样例1:
ERROR: aaa is not a legal numberERROR: 9999 is not a legal numberERROR: 2.3.4 is not a legal numberERROR: 7.123 is not a legal numberThe average of 3 numbers is 1.38
输入样例2:
2aaa -9999
输出样例2:
ERROR: aaa is not a legal numberERROR: -9999 is not a legal numberThe average of 0 numbers is Undefined
#include<stdio.h>#include<iostream>#include<string>#include<algorithm>using namespace std;bool isDigit(string str){bool firstPoint = true;for(int i = 0; i < str.length(); i ++){if((str[i] == '+' || str[i] == '-') && i == 0 )continue;if(str[i] >= '0' && str[i] <= '9')continue;if(str[i] == '.' && firstPoint){firstPoint = false;if(i >= str.length()-3)continue;}return false;}return true;}float stringToFloat(string str){float sum = 0.0;//bool firstPoint = true;for(int i = 0; i < str.length(); i ++){if((str[i] == '+' || str[i] == '-') && i == 0 )continue;if(str[i] >= '0' && str[i] <= '9')sum = sum * 10 + (str[i] - '0');if(str[i] == '.'){if(i == str.length()-3)sum = sum + (str[i+1]-'0')*0.1 + (str[i+2]-'0')*0.01;if(i == str.length()-2)sum = sum + (str[i+1]-'0')*0.1;break;}}return str[0] == '-' ? -1*sum : sum;}int main(){//freopen("D://input.txt", "r", stdin);int n;scanf("%d", &n);float totalSum = 0.0;int count = 0;string input;for(int i = 0; i < n; i ++){cin>>input;if(isDigit(input)){if(stringToFloat(input) >= -1000 && stringToFloat(input) <= 1000){totalSum += stringToFloat(input);count ++;}elsecout<<"ERROR: "<<input<<" is not a legal number"<<endl;}elsecout<<"ERROR: "<<input<<" is not a legal number"<<endl;}if(count > 1)printf("The average of %d numbers is %.2f\n", count, totalSum / count);else if(count == 1)printf("The average of %d number is %.2f\n", count, totalSum / count);elseprintf("The average of 0 numbers is Undefined\n");return 0;}




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 橡筋裤子腰小了怎么办 地垫粘瓷砖上怎么办 汽车围裙锈透了怎么办 万能胶水沾到手上怎么办 圆领体恤领口容易皱怎么办 上衣剪了个洞怎么办 上衣破了个洞怎么办 鸟屎腐蚀车漆怎么办 毛风衣叠久了怎么办 黑色的衣服沾毛怎么办 雪纺裙子弄上油怎么办 内衣买小了怎么办妙招 长裤衬衫裙邹了怎么办 100棉衬衣皱了怎么办? 短袖t恤袖口大了怎么办 短袖底下卷边了怎么办 棉质短袖衫缩水怎么办 纯棉t恤缩水了怎么办 t恤缩水变小了怎么办 衣服掉在雨棚上怎么办 车衣密码锁忘记密码怎么办 衣服的铁拉链弯怎么办 去旅行衣服皱了怎么办 衣服抽绳出来了怎么办 裤子的绑带掉了怎么办 网纱裙的边卷了怎么办 堵奶宝宝吸不通怎么办 棉麻裙子掉毛怎么办 10个月宝宝吃手怎么办 婴儿连体衣长了怎么办 冰丝面料变长了怎么办 t恤袖口大了怎么办 长袖t恤袖子长了怎么办 机打的扣子掉了怎么办 四个月宝宝头扁怎么办 鞋子前面穿翘了怎么办 休完产假没人带怎么办 休完产假孩子吃奶怎么办 巴布豆童鞋里面臭了到底怎么办 连体裤有点卡档怎么办 宝宝连体衣扣子掉了怎么办