我的程序有问题,并且出现上面的错误。但是,当我查找错误时,其他所有人都有某种int *变量,而与之相比,我没有那么多,并且仍然会收到此错误。
#include <iostream>
#include <fstream>
const int VALUES = 250;
using namespace std;
void minFinder(int nums[]);
void maxFinder(int nums[]);
void arithmeticMeanFinder(int nums[]);
void geometricMeanFinder(int nums[]);
void standardDeviationFinder(int nums[]);
int main()
{
ifstream file;
int number, counter;
int nums [VALUES];
counter = 0;
file.open("F://Yes/Untitled.txt");
file >> number;
while (!file.fail()){
counter++;
nums [counter-1] = number;
file >> number;}
arithmeticMeanFinder(nums[VALUES]);
file.close();
system("pause");
return 0;
}
void arithmeticMeanFinder (int nums[VALUES])
{
ifstream file;
int ct, holder;
double counter, mean;
double accum = 0;
for (ct = 0; ct < VALUES; ct++){
holder = nums[ct];
accum = accum + holder;
counter++;}
mean = (accum * 1.0) / counter;
cout << counter << " is the arithmetic mean" << endl;
}
答案 0 :(得分:2)
此代码:arithmeticMeanFinder(nums[VALUES]);
索引到nums
中以检索偏移量为VALUES
的(不存在)项。
我想你希望它更像是:arithmeticMeanFinder(nums);
其余的代码不是我想要的(例如,它要求文件中的值的数量完全等于VALUES
,否则将导致失败),但这是编译器引用的特定问题的来源。
答案 1 :(得分:0)
在您的代码中,您拥有:
void arithmeticMeanFinder (int nums[VALUES])
由于C ++的规则,这等效于:
void arithmeticMeanFinder (int nums[])
而且由于C ++的规则,这等效于:
void arithmeticMeanFinder (int *nums)
因此,当您调用此函数时,您需要编写:
arithmeticMeanFinder(nums); // pass the pointer to first element
代替:
arithmeticMeanFinder(nums[VALUES]);
在上面对arithmeticMeanFinder
的调用中,通过表达式nums[VALUES]
,将第VALUES
个元素(即int
)作为参数传递。
由于数组nums
仅包含VALUES
个项目(最大索引为VALUE - 1
),
这是一个出站访问。