L1-069 胎压监测 (15 分) Go语言|Golang
让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 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!
思路:
代码写的比较暴力
先找最大值,然后ans存储数量,判断ans里面有多少个元素来判断。
判断的话,先判断是否低于标准值,是的话,就加入ans中。
然后再一个一个与最大值判断,是否大于阈值,是的话就加入ans中。
然后判断ans里面的元素就可以了。
代码如下:
package main
import "fmt"
func main() {
info := make([]int, 6)
for i := 0; i < 6; i++ {
_, _ = fmt.Scan(&info[i])
}
ans := make([]int, 4)
max := info[0]
//maxIndex := 0
for i := 0; i < 4; i++ {
if info[i] < info[4] {
ans = append(ans, i)
}
if max < info[i]{
max = info[i]
//maxIndex = i
}//242 251 232 248 230 10
}
for i := 0; i < 4; i++ {
if max - info[i] > info[5] {
ans = append(ans, i)
}
}
count := 0
for _,v := range ans{
if v!=0 {
count+=1
}
}
if count == 0 {
fmt.Print("Normal")
}else if count>=2{
fmt.Print("Warning: please check all the tires!")
}else {
for _, v := range ans {
if v != 0 {
fmt.Printf("Warning: please check #%d!\n",v+1)
}
}
}
}