gpt4 book ai didi

C++ 列表处理 : initializing min to first value of list

转载 作者:行者123 更新时间:2023-11-28 03:07:13 24 4
gpt4 key购买 nike

我的代码存在的问题是最小值始终为 0。原因是因为我没有正确地将它初始化为“random.txt”的第一个值。我该怎么做?

这是我的代码:

using namespace std;

int main()
{

ifstream inputFile;
//open file
inputFile.open("random.txt");
int numCount = 0;
int number, max, min, i, x;
double average, sum;

while(inputFile >> number)
{
for (i = 0; i < numCount; i++)
{
x = number;
if (x < min)
{
min = x;
}
else if (x > max)
{
max = x;
}
}

numCount++;
sum = number + sum;
}
if (numCount > 0)
{
average = sum/numCount;
}

inputFile.close();

cout << "Number of numbers is: " << numCount << endl;
cout << "Sum of numbers is: " << sum << endl;
cout << "Average of numbers is: " << average << endl;
cout << "Max of numbers is: " << max << endl;
cout << "Min of numbers is: " << min << endl;

return 0;
}

最佳答案

min 初始化为可能的最大值,将 max 初始化为可能的最小值。

喜欢

int min = std::numeric_limits<int>::max();
int max = std::numeric_limits<int>::min();

参见 here for a reference of std::numeric_limits .


正如 WhozCraig 在对此答案的评论中所暗示的那样,如果文件中的数字越来越低,并且没有任何值大于以前的值(value)。

您可能想要执行 WhozCraig 在评论中建议的操作,或者更改为两个单独的 if 语句。


示例

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
std::ifstream inputFile("random.txt");
int number, max=0, min=0;
int numCount = 0;
double average=0, sum=0;

if (inputFile >> number)
{
min = max = number;
numCount = 1;
while(inputFile >> number)
{
if (number < min)
min = number;
else if (number > max)
max = number;

sum += number;
++numCount;
}

average = static_cast<double>(sum)/numCount;
}

cout << "Number of numbers is: " << numCount << endl;
cout << "Sum of numbers is: " << sum << endl;
cout << "Average of numbers is: " << average << endl;
cout << "Max of numbers is: " << max << endl;
cout << "Min of numbers is: " << min << endl;

return 0;
}

关于C++ 列表处理 : initializing min to first value of list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19396721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com