1054. 求平均值 (20)

计算合法数值的平均值
本文介绍了一种算法,用于从一组输入数据中筛选出合法的实数,并计算这些数值的平均值。合法的实数定义为位于[-1000, 1000]区间内且小数点后最多有两位的数。文章提供了详细的C语言实现代码。

本题的基本要求非常简单:给定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:

7
5 -3.2 aaa 9999 2.3.4 7.123 2.35

输出样例1:

ERROR: aaa is not a legal number
ERROR: 9999 is not a legal number
ERROR: 2.3.4 is not a legal number
ERROR: 7.123 is not a legal number
The average of 3 numbers is 1.38
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 char str[100];
 5 int IsRight();
 6 int main()
 7 {
 8     int n,cnt=0;
 9     double sum=0.0, mean;
10     int i;
11     scanf("%d",&n);
12     for( i=0; i<n; i++)
13     {
14         scanf("%s",str);
15         if(IsRight(str))
16         {
17             sum += atof(str); //atof将字符串转换为double型浮点数,要带上stdlib.h头文件
18             cnt++;
19         }
20         else printf("ERROR: %s is not a legal number\n", str);
21     }
22     mean = sum/cnt;
23     printf("The average of %d number",cnt);
24     if( cnt==0 )
25         printf("s is Undefined");
26     else if( cnt==1)
27         printf(" is %.2f",mean); //number是单数的情况,坑
28     else printf("s is %.2f",mean);
29     return 0;
30 }
31 
32 int IsRight()
33 {
34     int i=0,dot=0,num=0; // 小数点数,小数点后的位数
35     if( str[0]=='-') i++;
36     for( ; str[i]!='\0'; i++)
37     {
38         if(( str[i]>='0' && str[i]<='9')|| str[i]=='.')
39         {
40             //如果是0-9或者小数点
41             if( dot>0 && str[i]=='.') //出现两个小数点
42                 return 0;
43             if( dot>0) num++;
44             if( str[i]=='.')
45                 dot=1;
46         }
47         else return 0;
48     }
49     if( num>2) return 0;  //小数点后超过两位
50     if( atof(str)>1000.0 || atof(str)<-1000.0)
51         return 0;
52 
53     return 1;
54 }

 

转载于:https://www.cnblogs.com/yuxiaoba/p/8526773.html

在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统转化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值