【发布时间】:2019-02-23 15:54:49
【问题描述】:
在下面的函数中我通过语句明确地改变了变量rightArray:rightArray[i] = dataValues[i];
但是我从函数中得到的行为是变量 leftArray 正在改变而不是 rightArray
//Returns the interquartile range
float StatisticalAnalyser::getInterquartileRange()
{
float interquartileRange = 0;
int numberOfDatums = dataFile.findNumberOfDatums();
float numberOfDatumsFloat = dataFile.findNumberOfDatums();
float dataValues[dataFile.findNumberOfDatums()];
dataFile.initialiseArrayToFileData(dataValues);
//If even number of datums
if (numberOfDatums % 2 == 0)
{
//Arrays for for each side of the median
int arraySize = numberOfDatumsFloat/2;
float leftArray[numberOfDatums/2];
float rightArray[numberOfDatums/2];
//Initialise arrays for each side of the median
for (int i = 0; i < numberOfDatums; i++)
{
if (i < numberOfDatums/2)
{
leftArray[i] = dataValues[i];
}
if (i >= numberOfDatums/2)
{
//leftArray SOMEHOW GETS CHANGED INSTEAD OF RIGHT ARRAY
rightArray[i] = dataValues[i];
此处更改了 leftArray 而不是 rightArray:rightArray[i] = dataValues[i];
}
}
}
if (numberOfDatums % 2 == 0.5)
{
//Not relevant, isn't triggered when problem occurs
}
return interquartileRange;
}
我正在运行 Xcode 10.1,并且想知道如何修复此错误,以便函数更改 rightArray 而不是 leftArray。
【问题讨论】:
-
为什么投反对票?我试图尽可能简洁明了,并在本网站和谷歌上研究过类似的问题,但没有找到令人满意的答案:/
-
我不是反对者,但要求调试的问题是题外话。如有疑问,您可以阅读What topics can I ask about here?。一般来说,使用Tour 对该网站进行简短介绍不会有什么坏处。
-
@Scheff 感谢您的提醒,我会小心谨慎地浏览页面!
-
我不确定您的代码有什么问题,但
numberOfDatums % 2 == 0.5肯定没有达到您的预期。operator%专门用于整数值(如果没有重载),这永远不会成为真的。 -
@AShinyBlueColour 你有一个简单的错误,看我的回答
标签: c++ arrays xcode for-loop output