PAT 1108 Finding Average

PAT 1108 Finding Average,第1张

概述1108 Finding Average (20 分)   The basic task is simple: given N real numbers, you are supposed to calculate their average. But what makes it complicated is that some of the input numbers might not be 1108 Finding Average (20 分)  

The basic task is simple: given N real numbers,you are supposed to calculate their average. But what makes it complicated is that some of the input numbers might not be legal. A legal input is a real number in [−] and is accurate up to no more than 2 decimal places. When you calculate the average,those illegal numbers must not be counted in.

input Specification:

Each input file contains one test case. For each case,the first line gives a positive integer N (≤). Then N numbers are given in the next line,separated by one space.

Output Specification:

For each illegal input number,print in a line ERROR: X is not a legal number where X is the input. Then finally print in a line the result: The average of K numbers is Y where K is the number of legal inputs and Y is their average,accurate to 2 decimal places. In case the average cannot be calculated,output Undefined instead of Y. In case K is only 1,output The average of 1 number is Y instead.

Sample input 1:
75 -3.2 aaa 9999 2.3.4 7.123 2.35
Sample Output 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
Sample input 2:
2aaa -9999
Sample Output 2:
ERROR: aaa is not a legal numberERROR: -9999 is not a legal numberThe average of 0 numbers is Undefined
#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){    int n,cnt = 0;    cin >> n;    char a[50],b[50];    double temp,sum = 0.0;    for(int i=0;i < n;i++){        scanf("%s",a);        sscanf(a,"%lf",&temp);  //格式和scanf差不多,从a输入到temp  temp加&        sprintf(b,"%.2f",temp); //从temp输出到b        int flag = 0;        for(int j=0;j < strlen(a);j++)if(a[j]!=b[j])flag = 1;        if(flag||temp < -1000||temp > 1000){            printf("ERROR: %s is not a legal number\n",a);            continue;        }        else{            sum += temp;            cnt++;        }    }    if(cnt == 1)printf("The average of 1 number is %.2f",sum);    else if(cnt > 1)printf("The average of %d numbers is %.2f",cnt,sum / cnt);    else printf("The average of 0 numbers is Undefined");    return 0;}

sscanf 和 sprintf!!学到了

总结

以上是内存溢出为你收集整理的PAT 1108 Finding Average全部内容,希望文章能够帮你解决PAT 1108 Finding Average所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1027925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存