// Declareing variables
const int ARRAY_SIZE = 12; // Array size
int numbers[ARRAY_SIZE]; // Array with 12 elements
int highest, lowest, total = 0, count = 0;
double average;
ifstream fs;
/***** Processing Section *****/
fs.open ("numbers.txt");
if (fs.is_open())
{
cout << "Successfully opened numbers.txt\n";
fs.close();
}
else
{
cout << "Error opening file";
}
while (count < ARRAY_SIZE && fs >> numbers[count])
{count++;
highest = numbers[ARRAY_SIZE];
for (count = 1; count < ARRAY_SIZE; count++)
{
if (numbers[count] > highest)
highest = numbers [count];
}
lowest = numbers[ARRAY_SIZE];
for (count = 1; count < ARRAY_SIZE; count++)
{
if (numbers[count] < lowest)
lowest = numbers [count];
}
for (int count = 0; count < ARRAY_SIZE; count++)
total += numbers[ARRAY_SIZE];
for (int count=0; count < ARRAY_SIZE; count++)
total += numbers[ARRAY_SIZE];
average = total / ARRAY_SIZE;
}
此代码使用带有数字的number.txt文件: 47 89 65 36 12 25 17 8 62 10 87 62
我的程序一直输出错误的结果,如:
成功打开numbers.txt
最高值为0
最低值为3
数字之和为0
数字的平均值是2.09204e-317
答案 0 :(得分:0)
立即出现一个错误:您正在访问超出范围的数组元素:
highest = numbers[ARRAY_SIZE];
数组从0开始编制索引,因此最高索引为ARRAY_SIZE - 1
。您使用lowest
犯了同样的错误。
最简单的解决方案是:
highest = numbers[0];
//...
lowest = numbers[0];
第二个错误是你没有先将所有数字读入阵列。由于这个程序希望你使用数组,所以很可能你应该读取数组中的所有数字,并且一旦读入,你就会循环找出最高和最低数字。
while (count < ARRAY_SIZE && fs >> numbers[count])
count++;
// after this, loop for computing the highest and lowest
第三个错误是您在确认文件存在后关闭了文件。你应该保持文件打开。
if (fs.is_open())
{
cout << "Successfully opened numbers.txt\n";
// do not call fs.close()!!
}
同样,如果文件不存在,请立即返回,不要尝试处理最高和最低值。