2016-10-31 6 views
-3

私は大学で課題のために行列を上げようとしていますが、問題があります。私はこのコードを使用していますが、そのコードは機能しません。理由を理解できません。助けてもらえますか?行列をCプログラミング言語の力にする方法

void RaiseThem(float x[][3], float y[][3], int b){ 
    int i,j,w,k; 
    for(i = 0 ; i < 2 ; ++ i) 
      for(j = 0 ; j < 2 ; ++ j) 
      y[i][j] = (i == j) ; 


    float temp[3][3]; 

    for(w=0;w<b;w++) 
    { 
     for(i=0;i<2;i++) 
     { 
      for(j=0;j<2;j++) 
      { 
       temp[i][j]=0; 
       for(k=0;k<2;k++) 
       { 
        temp[i][j]+=y[i][k]*x[k][j]; 
       } 
      } 
     } 

     for(i=0;i<2;i++){ 
      for(j=0;j<2;j++) 
      { 
       y[i][j]=temp[i][j]; 
      } 
     } 
    } 
} 
+3

何が問題なのですか?あなたはそれを説明する必要があります。 – Carcigenicate

+1

ようこそスタックオーバーフロー!コードを問題の[mcve]にするようにコードを編集してください。そうすれば、それを再現して解決することができます。 [ask]も読んでください。 –

+1

ようこそスタックオーバーフロー!問題の声明が単に「動作しない」場合は、ソリューションを提供することは困難です。実際の結果とどのように違うのか、そしてどのようなことが起こるのかをより完全に説明するために質問を編集してください。何が良い説明になるかについてのヒントについては、[ask]を参照してください。 –

答えて

2

ループの境界が小さすぎます。

あなたのマトリックスは(おそらく)3x3なので、インデックスは0-2です。あなたは、あなたがi < 3j < 3にテストを変更する必要があります。2.

することはできませんi < 2j < 2、そうijをチェックしています。

関連する問題