• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行列の計算【配列 関数】)

行列の計算【配列 関数】

このQ&Aのポイント
  • 行列の計算に関するプログラムの作成方法や値の渡し方について質問しています。
  • 特に、行列式を計算する関数の作成方法や値の渡し方について知りたいとのことです。
  • また、逆行列のプログラムについても質問しています。

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

  • ベストアンサー
  • Schwarz20
  • ベストアンサー率46% (6/13)
回答No.1

まず、目に付いたのは、関数の宣言と定義があっていないことです。 2行目で、 double det(double array[3][3]); と宣言しているのなら、 22行目の関数の定義は、 double det(double array[3][3]) {  : } にしないとコンパイルエラーになります。 次に、呼び出し方にも問題があります。 配列を引数として呼び出すので、det関数を使い方は、det(array)で良いです det(array[][])では、コンパイルエラーになりますよ。 あと、det関数内の変数宣言が間違っています。 array変数は引数なので、ローカル変数として宣言する必要はありませんよ ここで必要なのは、行列数を格納するd変数を宣言することです ここまでで、コンパイル・リンクは出来ると思います 後は、ご自身で頑張ってみてください。 最後に、逆行列については、比較的簡単な方法としては2つの方法が考えられます 1つ目は、逆行列を格納する配列を引数で指定する方法です。 void inv(double in_mat[3][3], double out_mat[3][3]) という関数を実装していけば良いでしょう 2つ目は、戻り値で渡す方法です この場合は、ポインタを理解していることと、static変数を理解していることが必須となります double * inv(double in_mat[3][3]) という関数を宣言し実装していけば良いのです 関数の覚えたての人には難易度は高いかもしれないので、1つ目の方法で実装したら如何でしょうか?

関連するQ&A