我需要计算每行的平均值并存储在最后一个元素中。我设法做了,但后续行是前一行的累计平均值。 例如:
输入:
1 2 3 0
4 5 6 0
输出:
1.00 2.00 3.00 2.00
4.00 5.00 6.00 7.00 (应该是5.00)
这是我的代码
void findAverage2D(float matrix[4][4])
{
int i,j = 0;
float sum,avg=0;
for(i=0;i<4;i++)
{
for(j=0; j<4;j++)
{
sum+= matrix[i][j];
}
avg = sum/3;
matrix[i][3] =avg;
}
}
提前致谢。 :)
答案 0 :(得分:0)
移动变量&#34;总和&#34;在第一个for循环中 -
for(i=0;i<4;i++)
{
float sum = 0;
答案 1 :(得分:0)
该功能有两个错误。
第一个是变量sum
最初没有初始化,也没有在外循环的每次迭代中初始化。
第二个错误是每行的最后一个元素不应该参与平均值的计算。
考虑到这一点,该功能可以采用以下方式
void findAverage2D( float matrix[][4], size_t n )
{
const size_t M = 4;
for ( size_t i = 0; i < n; i++ )
{
float sum = 0.0f;
for ( size_t j = 0; j < M - 1; j++ )
{
sum += matrix[i][j];
}
matrix[i][M-1] = sum / ( M - 1 );
}
}
}
必须使用两个参数调用该函数,其中第二个参数是给定数组中的行数。