我想设计一个模块化程序来分析一年的降雨量数据,除了main函数之外,这个程序还应该有一个getData
函数,用于从用户那里接收12个月的总降雨量,并将其存储在一个double类型的二维数组中,它还应该有四个值返回函数,用于计算totalRainfall
、averageRainfall
、driestMonth
和wettestMonth
。这最后两个函数返回具有最低和最高降雨量的月份数,而不是那几个月的降雨量。注意这个月的数字可以用来获得那几个月的降雨量。此信息应由main或由main调用的displayReport
函数使用,以打印类似于以下内容的汇总降雨量报告:
这是我写的代码,我继续得到0返回,我不知道我做错了什么。
const int months = 12;
const int rain = 1;
void getData(double[months][rain], int, int);
double totalRainfall(double[months][rain], int, int);
double averageRain(double, int);
double driestMonth(double[months][rain], int, int);
int main()
{
double totalRain;
double averageRainfall;
int leastMonth;
double rainfall[months][rain];
getData(rainfall, months, rain);
totalRain = totalRainfall(rainfall, months, rain);
averageRainfall = averageRain(totalRain, months);
leastMonth = driestMonth(rainfall, months, rain);
cout << averageRainfall << endl;
cout << leastMonth;
}
void getData(double rainfall[months][rain], int months, int rain)
{
double rainAmount;
for(int row = 0; row < months; row++)
{
for(int column = 0; column < rain; column++)
{
cout << "enter rain for month " << (row+1) << "--->";
cin >> rainAmount;
while(rainAmount <= 0)
{
cout << "rainfall must be greater then 0" << endl;
cout << "enter rainfall ---> ";
cin >> rainAmount;
}
rainfall[row][column] = rainAmount;
}
}
}
double totalRainfall(double rainfall[months][rain], int months, int rain)
{
double totalRain = 0;
for (int column = 0; column < months; column++)
{
for(int row = 0; row < rain; row++)
{
totalRain += rainfall[column][row];
}
}
return totalRain;
}
double averageRain(double totalRain, int months)
{
double averageRainfall;
averageRainfall = totalRain / months;
return averageRainfall;
}
double driestMonth(double rainfall[months][rain], int months, int rain)
{
double leastRainMonth = rainfall[0][0];
int leastMonth;
for(int row = 0; row < months; row++)
{
for(int column = 0; column < rain; rain++)
{
if(rainfall[row][column] < leastMonth)
{
leastRainMonth = rainfall[row][column];
leastMonth = row;
}
}
}
return leastMonth;
}
2条答案
按热度按时间kxe2p93d1#
看起来这是一个赋值语句,你需要自己去找,所以我不打算给予你代码。你可以声明一个
dbl_array[sizex][sizey];
,但是有两件事:结构
double dbl_array[sizex][sizey]
是一个sizex
指针数组,指向sizey
双精度数组,所以你的数据结构可能不是你需要生成的二维数组,我的猜测是类似this。另一个区别是通过值 * 和通过引用 * 将变量传递给函数。您是通过值传递函数的,所以当函数结束时,对输入数组所做的更改会丢失。
这是一个非常重要的概念,你可能想先了解一下,看这里。
0dxa2lsx2#
在函数
driestMonth
中:leastMonth
,否则可能返回不确定的未初始化值。column
,而不是rain
。rainfall[row][column]
和leastRainMonth
,而不是leastMonth
。固定代码: