• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c言語 行列のn階乗のプログラム)

C言語で3次正方行列のn乗を計算するプログラム

このQ&Aのポイント
  • C言語で3次正方行列のn乗を計算するプログラムを作成しています。
  • 試行錯誤していますが、うまくいきません。
  • 教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • R_Earl
  • ベストアンサー率55% (473/849)
回答No.2

計算方法はあってます。 違っているのは次の2箇所です。 (1) 行列a, bの値設定 (2) 計算結果の表示 > int a[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} }; > int b[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} }; 1行1列目の要素(つまりa[0][0]とb[0][0]の値)が-1になっています。 行列Dの1行1列目の要素は1ですよね。 > printf("%3d",s[i][j]); > putchar('\n'); この2行だけだとs[3][3]だけを表示して終わってしまいます。 また、この位置で出力してしまうと2乗 ~ n乗の結果が全部表示されてしまいます。 n乗の結果のみを出力したいなら、 この2行を消してreturn文の直前に for(i = 0; i < 3; i++){  for(j = 0; j < 3; j++){   printf("%3d",s[i][j]);  }  putchar('\n'); } と打ち込んでみましょう (ちなみに上のコードは全角空白を含んでいるので、 回答文からこのコードをコピー&ペーストしてしまうと コンパイルエラーが起きるので注意してください)。

angel1119
質問者

お礼

質問の記入ミスのご指摘ありがとうございました。 また指摘された所を直したらうまく実行できました。 ありがとうございました。

その他の回答 (3)

  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.4

printf("%3d",s[i][j]); ここ,上の i,j の for 文抜けた後だから, i=3, j=3 の s[3][3]  つまり, 行列の 4,4 成分を表示している. コンパイルエラーか segmentation faults か意味のない数を表示するか のどれか printf("%3d",s[i][j]); putchar('\n'); の2行を for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%3d",s[i][j]); } putchar('\n'); } に置き換える.

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.3

カテゴリー違いです。 そのプログラムでは、n が 2 以上であれば、 return の直前の時点で、s[][] の中に a[][] の n 乗が正しく求められています。 デバッガ上で s の値を確認すれば判ことです。 表示が上手くいかないとすれば、 数学以外の点に誤りがあります。

回答No.1

最後の表示だけじゃないですか。 ループの外に出てる >printf("%3d",s[i][j]);

関連するQ&A