- ベストアンサー
visualC++につてい
今visualC++で6*6の行列の逆行列を求めるプログラムを書いています。ちなみに逆行列を求めるプログラムはわかっています。 [わからない点] main関数でA[6][6]とinv_A[6][6]を宣言して、A[][]を逆行列にする関数に引数として渡し、できた逆行列をmain関数のinv_A[6][6]に値を入れたのですが、どうしたらよいのですか?ご存知のかたいらっしゃいましたら教えてください。お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#include <stdio.h> #define N 6 void Invert(double a[N][N],double inv_a[N][N]) { //ここにaを逆行列にしてinv_aに求めるプログラムを書く } int main(void) { int i,j; double A[N][N] = { {11.0,12.0,13.0,14.0,15.0,16.0 }, {21.0,22.0,23.0,24.0,25.0,26.0 }, {31.0,32.0,33.0,34.0,35.0,36.0 }, {41.0,42.0,43.0,44.0,45.0,46.0 }, {51.0,52.0,53.0,54.0,55.0,56.0 }, {61.0,62.0,63.0,64.0,65.0,66.0 } }; double inv_A[N][N]; Invert(A,inv_A); for (i=0;i<N;i++) { for (j=0;j<(N-1);j++) { printf("%f,",inv_A[i][j]); } printf("%f\n",inv_A[i][N-1]); } }
その他の回答 (2)
- watataku70
- ベストアンサー率50% (1/2)
masatoyoさん、こんにちは。 すみません。先ほどの回答は誤りでした。配列の場合は引数を受け取った側の関数で値を変更してやると、呼び出し側の配列も変更されます。したがってchie65535さんが、書かれているように逆行列の関数に引数を渡してやれば良いと思います。 chie65535さんご指摘ありがとうございました。m(_)m
- watataku70
- ベストアンサー率50% (1/2)
こんにちは、masatoyoさん。 逆行列を求める関数があるのであれば、以下のようにその戻り値をinv_A[6][6]に代入すれば良いと思います。(勿論、逆行列を求める関数が戻り値を返さないといけませんが・・・・・) inv_A[6][6] = [関数名(引数)];
補足
この場合引数はどのようなかたちでわたして、 戻り値はどのようなかたちでわたすのですか? 宜しくお願いします。