大学生
最后登录1970-1-1
在线时间 小时
注册时间2013-11-7
|
无线遥控按一下按键,就会连续发5个相同的码出去,接收到第一个码后就做判断,不接收剩下的4个码,但如果第一个码受到干扰的,那么码就不对,而我又只接收了第一个码做判断,这样数据就不正确,所以我想把所有码接收下来,再去判断出其中相同值最多的那个值作为接收到的标准数据。
请教学习后,思路是这样的。
int main()
{
unsigned char c;
int receivedata[5]={1,2,3,3,4};
int element[5] = {-1,-1,-1,-1,-1};
int sum[5] = {0,0,0,0,0};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(receivedata[i]==element[j]) //判断是否与存好的变量相等
{
sum[j]++; //相等则在sum[]相应的位置加1,表示有两个相同的变量
break;
}
else if(element[j]==-1)
{
element[j]=receivedata[i]; //如果不相等,则为新变量,存入element中
sum[j]++;
break;
}
}
}
int max = sum[0];
for(int i=0;i<5;i++)
{
if(sum[i]>max) //比较相同数量大小
max=sum[i];
}
for(int i=0;i<5;i++)
{
if(max==sum[i])
{
receive_dat[c]=element[i]; //保存相同变量最后的变量,可以是多个最多
c++;
}
}
期待大神们给出最后的方法:
|
|