我正在制作一个程序,要求用户打开现有的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”的地方,我想说些值的数量,而我希望它的最小值是实际的最小值。
答案 0 :(得分:0)
以下是将文件中的数字读入std::vector<int>
的示例:
int number = 0;
std::vector<int> database;
while (inputFile >> number)
{
database.push_back(number);
}
std::vector
是一个不错的选择,因为它可以根据需要动态扩展(根据需要执行动态内存分配)。
但是,您不需要存储数字即可确定最高,最低和平均值:
int sum = 0;
int highest;
int lowest;
inputFile >> highest;
lowest = highest;
sum = highest;
int number;
int quantity = 1;
while (inputFile >> number)
{
if (number > highest)
{
highest = number;
}
if (number < lowest)
{
lowest = number;
}
sum += number;
++quantity;
}
double average = (sum * 1.0) / quantity;