【发布时间】:2020-02-02 07:43:57
【问题描述】:
我正在制作一个程序,要求用户打开现有的 txt 文件。程序应该从文件中读取数字并将它们存储到数组中。我应该用数组中的这些数字创建不同的函数,例如获取最大数字、最小数字、总和和平均值。我已经完成了这些功能,但我不知道如何从数组中提取数字。
这是一个数字示例,但不是用空格分隔,而是用新行分隔。
53 22 87 103 -3 75 220 1 64 543 98 44
int getLowest(int num[], int size);
int getHighest(int num[], int size);
int getSum(int num[], int size);
int getAverage(int num[], int size);
int main()
{
string fileName;
ifstream inputFile;
const int ARRAY_SIZE = 12;
int numbers[ARRAY_SIZE];
cout << "Enter the name of imput file: ";
cin >> fileName;
inputFile.open(fileName);
if (inputFile)
{
cout << " numbers read from input file.\n"
<< "The lowest value is " << getLowest(numbers, ARRAY_SIZE) << endl;
}
else
{
//Display error message
cout << "Error, this file does not exist.";
}
system("pause");
}
int getLowest(int num[], int size)
{
int temp = num[0];
for (int i = 0; i < size; i++)
{
if (temp < num[i])
{
temp = num[i];
}
}
return temp;
}
int getHighest(int num[], int size)
{
int temp = num[0];
for (int i = 0; i > size; i++)
{
if (temp > num[i])
{
temp = num[i];
}
}
return temp;
}
int getSum(int num[], int size)
{
int sum = 0;
for (int i = 0; i < size; i++)
{
sum += num[i];
}
return sum;
}
double getAverage(int num[], int size)
{
int sum = 0;
double average;
for (int i = 0; i < size; i++)
{
sum += num[i];
}
average = sum / size;
return average;
}
当我用上面显示的数字打开文件时,我得到的结果不起作用。我明白了:
010FFCE0 从输入文件中读取的数字。 最低值为 1968178332
在上面写着“010FFCE0”的地方,我想得到一些说明值的数量和最低值的东西,我希望它是实际的最低值。
【问题讨论】:
-
仅供参考,getAverage() 只是
return getSum(num, size) / (double)size;。您应该注意的一件事是重用您已经编写的代码。 -
另外,在从文件中读取任何内容之前,您正在调用
getLowest。程序自上而下运行,一次一行。似乎您应该查看如何从文件中读取数据。您所做的只是打开文件。 -
debugging programs 的关键是确保每个步骤都有效。在担心最高/最低/等之前。函数,你应该验证你实际上已经“从文件中读取数字并将它们存储到数组中”。你这样做了吗?
-
@PaulMcKenzie 我知道这一点。我已经在我正在使用的另一个 IDE 中修复了这个问题。另外我如何从文件中读取数据。那是我的问题。谢谢。
-
如果你在基本的语言基础上遇到问题,比如从文件中读取数据,你应该编写一个非常简单的 3 到 5 行程序来做或尝试做这件事——从文件。所有这些带有平均值和总和的东西都不重要。此外,所有 C++ 书籍都讨论了如何从文件中读取提示——您正在从程序中已经存在的文件中读取——
cin >> fileName从“文件”中读取,该文件是键盘。从文件读取使用完全相同的语法,使用>>。