zoukankan      html  css  js  c++  java
  • 【PAT甲级】1108 Finding Average (20分)

    题意:

    输入一个正整数N(<=100),接着输入一行N组字符串,表示一个数字,如果这个数字大于1000或者小于1000或者小数点后超过两位或者压根不是数字均为非法,计算合法数字的平均数。

    trick:

    测试点2答案错误原因:题面指出如果只有一个合法数字,输出numbers的时候不加s,即为number。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int main(){
     5     //ios::sync_with_stdio(false);
     6     //cin.tie(NULL);
     7     //cout.tie(NULL);
     8     int n;
     9     cin>>n;
    10     int cnt=0;
    11     double sum=0;
    12     for(int i=1;i<=n;++i){
    13         string s;
    14         cin>>s;
    15         int flag=0;
    16         if(s[0]=='-')
    17             flag=1;
    18         double x=0;
    19         int pos=-1;
    20         for(int i=flag;i<s.size();++i){
    21             if(s[i]=='.'){
    22                 pos=i;
    23                 break;
    24             }
    25             if(s[i]<'0'||s[i]>'9'){
    26                 flag=2;
    27                 break;
    28             }
    29             x*=10;
    30             x+=s[i]-'0';
    31         }
    32         if(pos!=-1)
    33             for(int i=pos+1;i<s.size();++i){
    34                 if(s[i]<'0'||s[i]>'9'){
    35                     flag=2;
    36                     break;
    37                 }
    38                 x+=(s[i]-'0')/(1.0*pow(10,(i-pos)));
    39             }
    40         if(flag)
    41             x*=-1;
    42         if(s.size()-1-pos>2&&pos!=-1)
    43             flag=2;
    44         if(flag==0&&pos==0||flag==1&&pos==1)
    45             flag=2;
    46         if(x>1000||x<-1000)
    47             flag=2;
    48         if(flag==2){
    49             cout<<"ERROR: "<<s<<" is not a legal number
    ";
    50             continue;
    51         }
    52         ++cnt;
    53         sum+=x;
    54     }
    55     sum/=1.0*cnt;
    56     cout<<"The average of "<<cnt;
    57     if(cnt!=1)
    58         cout<<" numbers is ";
    59     else
    60         cout<<" number is ";
    61     if(!cnt)
    62         cout<<"Undefined";
    63     else
    64         printf("%.2lf",sum);
    65     return 0;
    66 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    redis和memcache的区别
    c语言行编辑程序
    C语言栈的实现
    双向链表
    静态链表的合并
    静态链表的创建
    链表
    将非递减有序排列(L L1)归并为一个新的线性表L2 线性表L2中的元素仍按值非递减
    C语言合并两个集合(L,L1) 将L1中不在L中的元素插入到L线性表中
    oracle--JOB任务
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11989329.html
Copyright © 2011-2022 走看看