不规则数组怎么求最大值
各位大神好,小弟在做一个小玩具。遇到一个问题。现在采集了20个数值,需要在这20个数值中比较最大值,然后输出。单个单个数值比较的话,太麻烦了。请问有什么比较简洁的方法吗? 采集的同时按大小顺序排列 n_mos 发表于 2013-3-12 15:15 static/image/common/back.gif
采集的同时按大小顺序排列
这20个数值是随机抽取的啊,而且每个数值采集的点都是固定不能动的。 这20个数值怎么抽取?抽取的时候不就可以顺便比较一下大小?
定义变量 旧数据 = 0,新数据 = 0;
循环(20次)
{
新数据=采集数据();
判断(旧数据<新数据)旧数据 = 新数据;
} kanprin 发表于 2013-3-12 15:29 static/image/common/back.gif
这20个数值怎么抽取?抽取的时候不就可以顺便比较一下大小?
利用步进电机采的没转18度采集一个数据。采集一圈后比较20个数据那个最大。并转到最大值的地方。做太阳追踪器用到的
本帖最后由 Tliang 于 2013-3-12 17:24 编辑
hengjingdianzi 发表于 2013-3-12 16:53 static/image/common/back.gif
利用步进电机采的没转18度采集一个数据。采集一圈后比较20个数据那个最大。并转到最大值的地方。做太阳 ...
写的这么清楚了还不会?
如果其他数据也要保留就保存标号就行了。
定义变量 最大值地址 = 0;
循环(20次)
{
电机转18度();
数据缓存【计次变量】 = 数据采集();
判断(数据缓存【计次变量】>数据缓存【最大值地址】 )最大值地址 = 计次变量;
}
编辑:看错了,18度不是18圈。。。
为什么一定得等到转完后才比较? 嗯,保存的时候把索引也保存下,最后转到索引位置即可 Tliang 发表于 2013-3-12 17:10 static/image/common/back.gif
写的这么清楚了还不会?
如果其他数据也要保留就保存标号就行了。
我做的一个太阳能追踪器的。我想让他开机时自检,转一圈寻找最大值,这时正好对着太阳。呵呵 hengjingdianzi 发表于 2013-3-12 21:26 static/image/common/back.gif
我做的一个太阳能追踪器的。我想让他开机时自检,转一圈寻找最大值,这时正好对着太阳。呵呵 ...
那就转一下比较一下,然后保存计次变量。
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(); //定位到最大值这个地方
}
页:
[1]