【发布时间】:2013-12-12 03:03:54
【问题描述】:
我的代码用 5 个不同的值填充了一个大小为 5 的数组(代码未显示)。然后它用相应的数字填充数组中的每个索引(底部函数)。然后它保存之前最大的索引(最初从 0 开始)。然后它在数组中搜索最大值,保存该值和找到它的索引。
但是,当我多次运行它时,它永远不会给我当前的索引值 0。它总是为 1。例如。我第一次运行它,之前最大的索引是 0,当前索引是 1(这是正确的)。然后当我再次运行它时,第一个值是最大的。之前最大的索引为 1(正确),但当前的索引值也为 1。(应该为 0)。
有人能找出我的代码有什么问题吗?
float highestTemperature(float temperaturearray[])
{
int arraylength = 5; //knows how large the array is
hottest = temperaturearray[0];
previouslargestindex = currentlargestindex;
Serial.print("previous largest index = ");
Serial.println(previouslargestindex);
for(int i = 0; i < arraylength; i++) //loops through the array
{
if(temperaturearray[i] > hottest)
{
hottest = temperaturearray[i];
currentlargestindex = i;
} //end if statement
} //end for loop
Serial.print("current largest index = ");
Serial.println(currentlargestindex);
}
float fillarray(float temperaturearray[])
{
sensors.requestTemperatures();
temperaturearray[0] = sensors.getTempC(Probe01);
temperaturearray[1] = sensors.getTempC(Probe02);
temperaturearray[2] = sensors.getTempC(Probe03);
temperaturearray[3] = sensors.getTempC(Probe04);
temperaturearray[4] = sensors.getTempC(Probe05);
}
【问题讨论】:
-
尝试将 i++ 更改为 ++i 不确定
-
这两个函数都说它们返回一个浮点数,但实际上它们什么都不返回。
-
println是否实际打印float,还是它想要一个 C 风格的字符串?我怀疑是后者。此外,您需要在查找最大索引的循环之前将currentlargestindex初始化为 0,否则如果最大索引为 0,它将无法正确更新currentlargestindex。
标签: c++ arrays indexing arduino