在本课程练习中,我们将使用包含20个数字的文本文件。因此,两个数组的最大值为20.使用函数我们需要填充数组。阵列中的每个连续位置将是基于原始起始值和计算值的计算值
索引到数组中如下:
1)将45添加到起始值
2)如果阵列位置可被3整除:
A)计算值是起始值乘以阵列位置
3)否则:
A)计算值是起始值除以阵列位置
4)将计算值存储在下一个阵列位置
5)增加此数组中的值的数量
出于某种原因,我收到一个错误,告诉我我无法将参数2从' int [20]转换为' int&#39 ;?
void FillArray(ifstream& Ex5Numbers, int calculatedArray[],
int& numOfCalculatedValues, const int MAX)
{
int index;
int startValue;
//Read the starting value
Ex5Numbers >> startValue;
//Filling the array through the input file
for (index = 0; index <= MAX; index++)
{
//Store the start value into the array
calculatedArray[index] = startValue;
//Add 45 to the start value
startValue += 45;
//Calculate the next number in the array
if (numOfCalculatedValues / 3 == 0)
{
startValue = index * startValue;
}
else
{
startValue = startValue / index;
}
//Increment the tag field for the array
numOfCalculatedValues++;
}
答案 0 :(得分:0)
在这里运行正常(我用std :: istream替换了ifstream,因为我懒得打开文件):
const int MAX = 20;
int calculatedArray[MAX + 1]; // fix off-by-one error in FillArray
int numOfCalculatedValues = 1; // must be one of the computation is off
FillArray(std::cin, calculatedArray, numOfCalculatedValues, MAX);
注意:(numOfCalculatedValues / 3 == 0)不会测试3的可除性。
注2:传递numOfCalculatedValues是有害的。改为使用索引。
注3:你有一个一个一个错误,你正在计算MAX + 1个元素