用户定义的函数和数组

时间:2014-11-19 17:42:14

标签: c++ arrays function

在本课程练习中,我们将使用包含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++;

}

1 个答案:

答案 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个元素