C++ 如何在随机数列表中查找大于或小于的元素
我有一个元素列表(随机数字),这些元素在输出时不断变化(100个索引),我想做的是,如果输出时生成的任何数字(即使有一个)等于或大于数字“27”,则打开led,但如果数字都小于“27”,则关闭led。我为其创建的逻辑不起作用,即使我得到的数字输出高于值27(如25,26.5,27.8,23,29.01,30.87,23…等等),LED仍然没有准确地打开。以下是我在Arduino的代码部分:C++ 如何在随机数列表中查找大于或小于的元素,c++,loops,automation,arduino-ide,C++,Loops,Automation,Arduino Ide,我有一个元素列表(随机数字),这些元素在输出时不断变化(100个索引),我想做的是,如果输出时生成的任何数字(即使有一个)等于或大于数字“27”,则打开led,但如果数字都小于“27”,则关闭led。我为其创建的逻辑不起作用,即使我得到的数字输出高于值27(如25,26.5,27.8,23,29.01,30.87,23…等等),LED仍然没有准确地打开。以下是我在Arduino的代码部分: for (int x = 0 ; x < 101 ; x++) { Serial.
for (int x = 0 ; x < 101 ; x++)
{
Serial.print("Pixel ");
Serial.print(x);
Serial.print(": ");
Serial.print(myList[x], 2); #myList has got the 100 random numeric values
Serial.print("C");
Serial.println();
if(myList[x<100]>=27)
digitalWrite(ledPin, HIGH);
if(myList[x<10]<27)
digitalWrite(ledPin, LOW);
}
for(int x=0;x<101;x++)
{
串行打印(“像素”);
连续打印(x);
连续打印(“:”);
Serial.print(myList[x],2)#myList获得了100个随机数值
连续打印(“C”);
Serial.println();
if(myList[x=27)
数字写入(ledPin,高电平);
if(myList[x解决问题的一种可能方法是在数组中找到最大值。这可以通过在数组上单次传递(循环)来完成
如果最大值小于27
,则所有值都小于27
如果最大值等于或大于27
,则满足该条件
当您找到一个大于27
的值时,您可以通过打破循环来“优化”这一点,并且您不需要找到更大的值。这是一个简单的搜索算法,它可以帮助您:
void loop{
...
...
...
boolean found = false;
int x = 0;
while(x<101 && !found){
if(myList[x]>=27){
found = true;
}
x++;
}
if(found) digitalWrite(ledPin, HIGH);
else digitalWrite(ledPin, LOW);
}
void循环{
...
...
...
布尔值=false;
int x=0;
while(x=27){
发现=真;
}
x++;
}
如果(发现)数字写入(ledPin,高);
else数字写入(ledPin,低电平);
}
myList[xmyList[x]
表达式xmyList的类型是什么
?因为从其用法来看,它必须是bool myList[]
。我指的是xAlso的用法。请注意,当x==100
时,您实际上是在访问元素编号101,因为索引是以零为基础的。哦,好吧。您知道如何在arduino中找到最大值吗?@hns A用于
循环和
比较?尝试了这个!它使LED闪烁,带有随机数above和27以下,但如果100个数字中有1个或多个大于27,则不常亮起LED。是否有其他方法检查myList[x]中是否有大于27的值,其中x在0和100之间?myList[x=27)的逻辑不正确?不,当使用数组时,必须使用索引[]“X关于求解……您可以将boolean found=false
置于函数循环之外,但一旦led亮起,它将一直亮起,直到您指定何时关闭(例如:当数组“myList”更改时)