我怎么能返回一行的索引在一个函数的二维数组?



我想设计一个模块化程序来分析一年的降雨量数据。除了main之外,程序还应该有一个getData函数,该函数接受用户提供的12个月的总降雨量,并将其存储在double类型的二维数组中。它还应该有四个返回值函数,用于计算totalRainfallaverageRainfalldriestMonthwettestMonth并返回到主机。最后两个函数返回降雨量最低和最高的月份的数字,而不是那些月份的降雨量。注意,这个月的数字可以用来获得那些月份的降雨量。该信息应由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;
}   

看起来这是一个你需要自己找到的赋值,所以我不打算给你代码。你可以声明一个dbl_array[sizex][sizey];,但是有两件事:

结构体double dbl_array[sizex][sizey]是一个指向sizey双精度数组的sizex指针数组。所以你的数据结构可能不是你需要生成的二维数组。我猜大概是这样的。

另一件事是通过传递变量给函数的区别。的引用。你是按值传递你的函数,所以当你的函数结束时,对输入数组所做的更改将丢失。

这是一个非常重要的概念,你可能想首先理解它,见这里。

函数driestMonth:

  • 您应该初始化leastMonth,否则可能会返回不确定的未初始化值。
  • 你应该增加column而不是rain在内部循环。
  • 你应该比较rainfall[row][column]leastRainMonth,而不是leastMonth
  • 固定代码:

double driestMonth(double rainfall[months][rain], int months, int rain)
{
double leastRainMonth = rainfall[0][0];
int leastMonth = 0; // initialize this

for(int row = 0; row < months; row++)
{
for(int column = 0; column < rain; column++) // increment proper thing
{
if(rainfall[row][column] < leastRainMonth) // compare with proper thing
{
leastRainMonth = rainfall[row][column];
leastMonth = row;
}   
}   
}

return leastMonth;
}   

相关内容

  • 没有找到相关文章

最新更新