首页 > 技术文章 > PTA L1-069 胎压监测

muhuai-bokeyuan 2021-04-19 23:45 原文

原题目链接

https://pintia.cn/problem-sets/994805046380707840/problems/1336215880692482052

小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。 

让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 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!

AC代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int a[10],small,dif;
 6     int Min=1e5,Max=0;
 7     int ans;
 8     for(int h=1;h<=4;h++)
 9     {
10         cin>>a[h];
11         if(a[h]>Max) Max=a[h];
12         if(a[h]<Min)
13         {
14             Min=a[h];
15             ans=h;
16         }
17     }
18     cin>>small>>dif;
19     if(Max-Min<=dif&&Min>=small)
20         cout<<"Normal"<<endl;
21     else
22     {
23         int con=0;
24         for(int h=1;h<=4;h++)
25         {
26             if(a[h]<small) con++;
27             else if(Max-a[h]>dif) con++;
28         }
29         if(con>=2)
30             cout<<"Warning: please check all the tires!"<<endl;
31         else
32         {
33             cout<<"Warning: please check #"<<ans<<"!"<<endl;
34         }
35     }
36     return 0;
37 }

1. 最小值和最大值相差在阈值范围内则四个轮胎一定都正常

2. 不合格轮胎计数:和最大值相差超过阈值+胎压小于最小值

3. 如果只有一个轮胎不合格,则这个不合格的轮胎一定是值最小的那个

推荐阅读