搜索
bottom↓
回复: 10

不规则数组怎么求最大值

[复制链接]

出0入0汤圆

发表于 2013-3-12 15:08:14 | 显示全部楼层 |阅读模式
各位大神好,小弟在做一个小玩具。遇到一个问题。现在采集了20个数值,需要在这20个数值中比较最大值,然后输出。
单个单个数值比较的话,太麻烦了。请问有什么比较简洁的方法吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-3-12 15:15:42 | 显示全部楼层
采集的同时按大小顺序排列

出0入0汤圆

 楼主| 发表于 2013-3-12 15:23:23 | 显示全部楼层
n_mos 发表于 2013-3-12 15:15
采集的同时按大小顺序排列

这20个数值是随机抽取的啊,而且每个数值采集的点都是固定不能动的。

出0入0汤圆

发表于 2013-3-12 15:29:11 | 显示全部楼层
这20个数值怎么抽取?抽取的时候不就可以顺便比较一下大小?

出0入0汤圆

发表于 2013-3-12 15:40:51 | 显示全部楼层
定义变量 旧数据 = 0,新数据 = 0;
循环(20次)
{
     新数据=采集数据();
     判断(旧数据<新数据)旧数据 = 新数据;
}

出0入0汤圆

 楼主| 发表于 2013-3-12 16:53:03 | 显示全部楼层
kanprin 发表于 2013-3-12 15:29
这20个数值怎么抽取?抽取的时候不就可以顺便比较一下大小?

利用步进电机采的  没转18度采集一个数据。采集一圈后比较20个数据那个最大。并转到最大值的地方。做太阳追踪器用到的

出0入0汤圆

发表于 2013-3-12 17:10:25 | 显示全部楼层
本帖最后由 Tliang 于 2013-3-12 17:24 编辑
hengjingdianzi 发表于 2013-3-12 16:53
利用步进电机采的  没转18度采集一个数据。采集一圈后比较20个数据那个最大。并转到最大值的地方。做太阳 ...


写的这么清楚了还不会?
如果其他数据也要保留就保存标号就行了。

定义变量 最大值地址 = 0;
循环(20次)
{
      电机转18度();
      数据缓存【计次变量】 = 数据采集();
      判断(数据缓存【计次变量】>数据缓存【最大值地址】 )最大值地址 = 计次变量;
}

编辑:看错了,18度不是18圈。。。
为什么一定得等到转完后才比较?

出0入42汤圆

发表于 2013-3-12 19:23:35 | 显示全部楼层
嗯,保存的时候把索引也保存下,最后转到索引位置即可

出0入0汤圆

 楼主| 发表于 2013-3-12 21:26:31 | 显示全部楼层
Tliang 发表于 2013-3-12 17:10
写的这么清楚了还不会?
如果其他数据也要保留就保存标号就行了。

我做的一个太阳能追踪器的。我想让他开机时自检,转一圈寻找最大值,这时正好对着太阳。呵呵

出0入0汤圆

发表于 2013-3-13 09:24:52 | 显示全部楼层
hengjingdianzi 发表于 2013-3-12 21:26
我做的一个太阳能追踪器的。我想让他开机时自检,转一圈寻找最大值,这时正好对着太阳。呵呵 ...


那就转一下比较一下,然后保存计次变量。

void sysInit(void)
{
       uint8 count = 0, Save = 0, Value = 0, NewValue = 0;
       for(count = 0;count < 20;count++)              //20次为一圈
       {
               MotorMov();                                       //电机转18度
               NewValue = Get_data();                      //获取新数据
               if(NewValue > Value)                          //比较是否比前面的值大
               {
                     Value = NewValue;                        //如果比前面的值大,则保留此值。
                     Save  = count;                              //保留第几次的值大
               }
       }
       for(count = 0;count < Save;count++)MotorMov();   //定位到最大值这个地方
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表