我正在尝试这种方式。似乎更简化了。只是想弄清楚如何包含月份名称,并让程序输出最多雨月份的名称而不是用户输入的数字。
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a[12];
int x;
for (x=0; x<12; x++)
{
cout << "Insert days of rainfall for month "<<x+1<<endl;
cin >>a[x];
}
int max;
int min;
max = a[0];
min = a[0];
int e=0;
while (e<12)
{
if (a[e]>max)
{
max = a[e];
}
else if (a[e]<min)
{
min = a[e];
}
e++;
cout<<"The rainiest month was " <<max<<endl;
cout<<"The least rainy month was " <<min<<endl;
getch ();
return 0;
}
system("PAUSE");
return EXIT_SUCCESS;
}
答案 0 :(得分:1)
您的average
计算有点偏差,在数学方面您必须考虑操作的顺序。乘法和除法总是先做,然后加法和减法。你最终得到的结果是,只有dec
除以12,然后你将所有其他日子添加到它。要解决这个问题,你需要在括号中包含所有月份的添加以强制添加首先发生,然后再进行除法。在这种情况下,您可以使用year
变量,因为已经将所有月份加在一起并将其除以12。
就你的问题而言,你想要显示最高和最低值输入,但我没有看到任何尝试在你的代码中解决这个问题。我觉得不太愿意为你编写代码,所以我只是简单地解释一下你需要做什么。查看每个月的值,每次查看下个月,将其与您记住的当前最高值和当前最低值进行比较。当新月有一个新的更高或更低的值时,您将替换您记住的值。每个月循环一次后,您将得到最高和最低值。
答案 1 :(得分:0)
最快,最干净的方法是使用std::vector
之类的容器。然后使用std::sort
对其进行排序。
// Our container
std::vector<double> userInput;
// Populate the vector. Please don't cin into a double!
// Sort it.
std::sort (userInput.begin(), userInput.end());
// The highest value will be the last value in the vector
// whilst the lowest value will be the first one