PAT (Advanced Level) 1108. Finding Average (20)
2016-07-05 10:39
393 查看
简单模拟。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<algorithm> using namespace std; char s[1000]; int n; int num,num2,pos; bool f() { int p=0; for(int i=0;s[i];i++) { if(s[i]>='0'&&s[i]<='9') continue; else if(i==0&&s[i]=='-') continue; else if(s[i]=='.') {p++; continue;} else return 0; } if(p>1) return 0; pos=strlen(s); for(int i=0;s[i];i++) if(s[i]=='.') pos=i; int hh=strlen(s)-pos-1; if(hh>2) return 0; num=0; for(int i=0;i<pos;i++) { if(s[i]>='0'&&s[i]<='9') num=num*10+s[i]-'0'; if(num>1000) return 0; } if(num>1000) return 0; num2=0; for(int i=pos+1;s[i];i++) num2=num2*10+s[i]-'0'; double a=1.0*num+num2/(pow(10.0,strlen(s)-pos-1)); if(a>1000.0) return 0; return 1; } int main() { scanf("%d",&n); double sum=0; int geshu=0; for(int i=1;i<=n;i++) { scanf("%s",s); if(f()==0) printf("ERROR: %s is not a legal number\n",s); else { double a=0; a=1.0*num+num2/(pow(10.0,strlen(s)-pos-1)); if(s[0]=='-') a=-a; sum=sum+a; geshu++; } } if(geshu==1) printf("The average of 1 number is %.2lf\n",sum); else if(geshu==0) printf("The average of 0 numbers is Undefined\n"); else printf("The average of %d numbers is %.2lf\n",geshu,sum/geshu); return 0; }
相关文章推荐
- Modules
- Centos 7下一键安装ffmpeg 的经验
- [Android]带删除按钮的EditText
- centos7 下搭建tomcat服务器
- FCK插入图片的时候提示无权限解决方法有两种
- document自带的强大的选择器querySelector/querySelectorAll
- ionic:如何在应用中直接拨打电话
- 为导航栏创建下拉菜单
- 一句话概括C# . NET VS 关系
- uploadfiy插件文件上传后,并显示上传的图片
- 反射获取顶层activity实例对象
- 服务器(Liunx)打包发布java web工程
- Linux 命令之last命令详解
- Getting started: A skeleton application
- PAT1064(上)分析部分
- 鼻炎舒宁治过敏性鼻炎
- 14.9.4 COMPACT and REDUNDANT Row Formats
- MapReduce基础开发之六Map多输入
- 设计模式总结
- 14.9.4 COMPACT and REDUNDANT Row Formats