小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。
让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序,随时监测四轮的胎压,并给出正确的报警信息。报警规则如下:
如果所有轮胎的压力值与它们中的最大值误差在一个给定阈值内,并且都不低于系统设定的最低报警胎压,则说明情况正常,不报警;
如果存在一个轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,则不仅要报警,而且要给出可能漏气的轮胎的准确位置;
如果存在两个或两个以上轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,则报警要求检查所有轮胎。
输入格式:
输入在一行中给出 6 个 [0, 400] 范围内的整数,依次为 1~4 号轮胎的胎压、最低报警胎压、以及胎压差的阈值。
输出格式:
根据输入的胎压值给出对应信息:
如果不用报警,输出 Normal;
如果有一个轮胎需要报警,输出 Warning: please check #X!,其中 X 是出问题的轮胎的编号;
如果需要检查所有轮胎,输出 Warning: please check all the tires!。
输入样例 1:
242 251 231 248 230 20
输出样例 1:
Normal
输入样例 2:
242 251 232 248 230 10
输出样例 2:
Warning: please check #3!
输入样例 3:
240 251 232 248 240 10
输出样例 3:
Warning: please check all the tires!
思路:
先设定一个数组分别存放四个轮胎数据,并且数组下标对应轮胎标;
在循环输入轮胎值时时找出最大值,并记录;
然后根据条件进行判断问题轮胎 。
注:
在这里判断轮胎的方法为,循环从第一个轮胎开始判断是否有问题,而分别要判断是否低于最低压和 最大值误差超过了阈值;
设定两个数字,第一个存放当前问题轮胎下标(因为当两个问题轮胎时即可不输出下标)
第二个数字存放问题轮胎个数(当出现问题轮胎时,此数字++即可)
在判断时,某轮胎有一条件不满足即跳出此轮胎循环即可(因为判断的为统一轮胎,当此轮胎已经被记录为问题轮胎后,就不必再去判断第二条件是否满足了)
最后,按照条件输出相应的数值即可。
代码:
#include <iostream> using namespace std ; int a[5] ; void test01() { int M_max, M_p, M_size ; M_max = 0 ; int num = 0 ; int P_num = 0 ; int C_sum = 0 ; for(int i=1; i<5; i++) { cin >> a[i] ; if(M_max < a[i]) { M_max = a[i] ; // 求出四个胎中最大值 } } cin >> M_p ; //最低胎压 cin >> M_size ; //胎压差的阈值 for(int i=1; i<5; i++) //判断 { if(a[i] < M_p) //判断是否低于最低胎压 { P_num++ ; //报警胎数+1 num = i ; //记录几胎 continue ; } C_sum = M_max - a[i] ; if(C_sum > M_size) { P_num++ ; num = i ; } } if(P_num == 0) { cout << "Normal" << endl ; return ; } if(P_num == 1 ) { printf("Warning: please check #%d!\n",num) ; return ; } if(P_num > 1) { cout << "Warning: please check all the tires!" << endl ; return ; } } int main(void) { test01() ; system("pause") ; return 0 ; }
运行结果·: