请教个问题,现在我有4路报警信息,存放到了一个数组里,比如是alarm[4],其中每一路的报警等级分为4等吧。 而现在我需要一个总的报警等级,总的报警等级是各路报警等级里的最高值,并且还要判断出来是那一路,进而进行报警处理。 我现在是做了4个for循环,第一个for循环里判断各路报警等级是不是有1,如果有1的话,则置总报警等级为1,第二个for循环判断各路报警等级里是不是又2,如果有2的话,则置总报警等级为2... 这样做能实现想要的功能,但是觉得有些繁琐。 请教下,有什么好的方法来计算下? 冒泡法排序?感觉也挺麻烦的。 |
点评
评分
查看全部评分
如果有alarm[4]的源头,好办。
设两个变量,比如叫alarmMax和alarmMXno,在存入alarm[]的任何一个值的时候,比较一下alarmMax,只要大于它就同时存入它和编号。适当的时候清零。
如果只能后期查询,也是一个for循环就够了,留取最大值和编号。而不是比较1,比较2,,,,
评分
查看全部评分
我一开始是写了5个for循环,依次判断数组里的数是否是0、1、2、3、4;
现在改了下,弄成两层for循环了,外层for循环是0-4,里层for循环判断数组。
想了想,这样其实和以前一样,只是写法上简洁了些。
3楼的朋友给的代码感觉挺好的,一会试下。
回复5楼
@stm1024
老哥吓得我赶紧去验证了一下代码,应该没有你说的那个bug,不过有另外的bug,当数组的值是相同的时候ch是最后一个,还需另外处理
相对来说,画板子多点,编程经验少些。
嗯,因为这个问题应该是一个非常简单的编程问题,其实你还要考虑的是,同时在两个通道出现故障等级相同的情况该如何处理。
像这种局部变量,只申明不初始化的话,其实值可能是任意的。
评分
查看全部评分
我知道你的意思,确实是代码初始化是个好习惯,我写的那个至少会执行一次if,所以不会出现任意值
嗯,你说的非常对,就是有时候做算法滤波的时候,经常容易忘记初始化……