0

行列とベクトルを乗算する関数があります。

 double *matrix_vector_multiply(int rows, int cols,
                           double **mat, double *vec)
{

    double *answer = malloc(rows * sizeof (double));
    int i,j;
    for (i=0; i<rows; rows++)
    ans[i]=0;

    for (i=0; i<rows; rows++){

        for (j=0; j<cols; cols++)
             {
            answer[i] = answer[i] + mat[i][j] * vec[j];
            }
        }
    return ans;
}

出力にすべて0が表示され続けます..それを修正する方法についてのアイデアはありますか?

4

4 に答える 4

0

代わりに行と列を増やしているように見えるため、2 つの for ループの変数 i と j は決して変わりません。これは、2 番目の for ループの本体で常に同じ合計を行うことを意味します。初期化後に値を計算することはないため、他の回答は 0 のままにしておくしかありません。

于 2012-10-23T07:40:50.587 に答える
0

にすべての値を 0 として格納しansてから返しansます。variable を明確に変更しているのに対してanswer

于 2012-10-23T08:28:20.463 に答える
0

と がansありanswerます。残りを理解していただければ幸いです;)

于 2012-10-23T07:37:03.100 に答える
0

これはあなたが投稿した実際のコードですか?ansandなどの明らかな問題に加えてanswer、 for ループは完全に間違っています。

for (i=0; i<rows; rows++)

次のようにする必要があります。

for (i=0; i<rows; i++)

と:

    for (j=0; j<cols; cols++)

次のようにする必要があります。

    for (j=0; j<cols; j++)
于 2012-10-23T07:38:25.710 に答える