如何找到此数组中的最大值和最低值
How can I find the highest and lowest values in this array?
我可以使用什么代码来打印出用户在此数组中输入的最高值和最低值?这个程序需要取用户输入的平均值(我已经这样做了)。现在我需要做的就是让程序打印出用户输入的最高值和最低值。
#include <iostream>
using namespace std;
int main()
{
float days = 0;
float temperatures [50];
float temptotal = 0;
float average = 0;
cout << "Enter the number of days: ";
cin >> days;
if (days > 50)
{
cout << "You may only enter temperatures for 50 days." << endl;
return 0;
}
for (int i = 1; i <= days; i++)
{
cout << "Enter the temperature for day number " << i << ": ";
cin >> temperatures[50];
temptotal += temperatures[50];
}
average = (temptotal / days);
cout << "The temperature average is: " << average << endl;
return 0;
}
有很多方法可以做到这一点。但是一个简单的方法是检查添加到数组中的当前值是否为最低/最高。首先,您需要假设最小值对应于一个非常高的数字,最大值对应于一个非常低的数字。
float min = 9999999999999;
float max = -9999999999999;
在此之后,您可以比较该值是低于最小值还是高于最大值。由于初始值与它们应该的值相反,因此第一个值将设置为最小值和最大值,然后将其他值与此值进行比较。这样,您将只保留最低值和最高值。
if(temperatures[i] > max)
max = temperatures[i];
if(temperatures[i] < min)
min = temperatures[i];
如果你注意到了,我用了temparatures[i]
.如果始终将用户在索引 50 处输入的值相加,则始终会覆盖最后输入的值。此外,数组的索引通常从 0 而不是 1 开始,所以你的 for 循环将如下所示: for (int i = 0; i < days; i++)
.
编辑了你的代码,这就是我最终得到的:
#include <iostream>
using namespace std;
int main()
{
float days = 0;
float temperatures [50];
float temptotal = 0;
float average = 0;
cout << "Enter the number of days: ";
cin >> days;
if (days > 50)
{
cout << "You may only enter temperatures for 50 days max." << endl;
return 0;
}
float min = 9999999999999;
float max = -9999999999999;
for (int i = 0; i < days; i++)
{
cout << "Enter the temperature for day number " << i << ": ";
cin >> temperatures[i];
temptotal += temperatures[i];
if(temperatures[i] > max)
max = temperatures[i];
if(temperatures[i] < min)
min = temperatures[i];
}
average = (temptotal / days);
cout << "The temperature average is: " << average << endl;
cout << "The highest temperature is: " << max << endl;
cout << "The lowest temperature is: " << min << endl;
return 0;
}
希望这有帮助!
您不会只保留一个具有最大值和最小值的局部变量吗?您正在浏览所有输入的项目?
`
float max=0;
float min=999;
for (int i = 1; i <= days; i++)
{
cout << "Enter the temperature for day number " << i << ": ";
cin >> temperatures[50];
temptotal += temperatures[50];
if temperatures[50] > max
max = temperatures[50];
if temperatures[50] < min
min = temperatures[50];
}
请原谅我的编码,因为这不是我的语言。另外,我也不完全理解您的代码。也许你不是故意一直使用温度[50]。也许你的意思是温度[i]?
祝你好运。
请看这里: C++函数可以在双精度数组中找到最大值?从本质上讲,您所做的是:
1) 添加
#include <algorithm>
在代码的顶部
2)在代码中使用std::max_element
和std::min_element
,例如像这样
double highest = *std::max_element(temperatures, temperatures + days);
double lowest = *std::min_element(temperatures, temperatures + days);
您可能希望在此处查找这些方法:http://www.cplusplus.com/reference/algorithm/max_element/和 http://www.cplusplus.com/reference/algorithm/min_element/(尽管请注意,许多人看不起 cplusplus.com 认为它不是C++最好的信息来源,但我想在这种情况下没关系)
或者,正如Eugene Sh.指出和Brett所展示的那样,您可以通过存储当前最高(最低)值并将其与每个新输入值进行比较来自己完成。
此外,正如Brett所注意到的,您希望在阅读循环中将temperatures[50]
更改为temperatures[i]
。但还有另一个更正:这个循环应该从0
运行到小于days
:
for (int i=0; i < days; i++)
由于数组从 0 开始索引,并且在最大值数 (50) 的情况下,您将填充数组的元素从 0
到 49
(这是 days-1
)包括,而不是从 1
到 50
。
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用指针从C++中的数组中获取最大值
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 整数溢出,最大值为 pow(10,19)
- 以C++递归方式查找向量中的最大值
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 如何使用可变参数模板类使用模板元编程获得最大值
- C++不同的最小最大值实现
- Vec3b:r/g/b 颜色的最大值为 254,而不是 255
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 是否可以将无符号 int 的最大值转换为 int 并将结果转换为 -1?
- 查找包含 N 个元素的数组的最小值和最大值
- 井字游戏具有奇怪行为的最小最大值算法(C++)
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 如何找到此数组中的最大值和最低值