2016-11-22 7 views
-2

私はスパース行列を追加するためのコードを読み取り、この条件に出くわしたスパース行列の追加条件は

if(sp1[0][0] != sp2[0][0] || sp1[0][1] != sp2[0][1]) 
{ 
    printf("Invalid matrix size "); 
    exit(0); 
} 

非ゼロの行と列の数が同じである必要があります理由を理解できませんでしたか? 申し訳ありません私は初心者です。

全体のコードは、第1のマトリックス内の数字列が第2の行列の行数と等しくする必要がマトリックスまたhere

+0

の[0] [2] =合計数の行の数と列のSH追加を実行するために同一である必要があります。 –

+0

なぜ同じでなければならない場合でも追加できます。 – Sniper

+0

そのコードの著者に質問してください。たとえそれが "_ではないにしても追加できます"と私は確信していません。 –

答えて

2

あります。

同じことが列についても当てはまります。

最初の行列の列の数は、2番目の行列の列の数と等しくなければなりません。

あなたが投稿したコードが表示されます。ここ は、リンクされたコードからの引用であり、以下のようにスパース行列が格納されている

この行列で

S [0] [0] =疎行列中の総行

S [0]疎行列[1] =総列

のあなたのリンクで説明から非ゼロ値

+0

マトリックスの追加ではなく、その疎なマトリックスの追加。行の数は0以外の行の数を示し、列 – Sniper

+0

と同じです。リンクされたコードでは、 'sp [0] [0]'と 'sp [0] [1]'は実際のマトリックス。 –

+0

これはまばらかもしれませんが、次元の異なる行列を追加することはできません。ゼロ以外の行の数を知ることは、値ゼロの行が何個あるかわからないため、役に立たないことに同意します。行列を追加できるかどうかを知るには、正確な次元が必要です。 「非ゼロ」次元のみを持つことは役に立たない。 – ComradeJoecool

関連する問題