![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
行列式を計算する関数をもちいてプログラムを見やすくしたいのですが、何回やっても値の渡し方がわかりません。
他にも逆行列のプログラムなどの渡し方も知りたいです。
以下が時ビンで考えたプログラムです。
#include <stdio.h>
double det(double array[3][3]);
int main( void )
{
int i,j,k,n=3;
double array[3][3],d;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf( "A[%d,%d]=",i+1,j+1);
scanf( "%lf",&array[ i ][ j ] );
}
}
printf("det= %f \n",det(array[][]));
return 0;
}
double det(double array[][])
{
double array[3][3];
d=array[0][0]*array[1][1]*array[2][2];
d+=array[1][0]*array[2][1]*array[0][2];
d+=array[2][0]*array[0][1]*array[1][2];
d-=array[2][0]*array[1][1]*array[0][2];
d-=array[1][0]*array[0][1]*array[2][2];
d-=array[0][0]*array[2][1]*array[1][2];
return d;
}
よろしくお願いします。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Visual Basic(VBA) 型が一致しませんとエラー 6 2023/07/06 20:14
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- C言語・C++・C# c言語について array[i]-‘0’ これってどーゆー意味ですか? (ちなみに16進数を10進数 5 2022/12/06 18:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
CArrayのソート
-
特定の文からメールアドレスの...
-
STLのvectorで作った配列をメン...
-
読み(あ行~わ行)ごとに分け...
-
Texでの数式
-
CArrayの要素としてCStringArra...
-
順位のところを画像にする方法
-
多次元配列の重複削除
-
Tableの背景色を交互に変えたい
-
PHPは何故値渡しより参照渡しの...
-
PHPのセレクトボックスの初期値...
-
array_search-配列関数の使い方
-
C言語 最大値と最小値を求めて...
-
これって何ソート?
-
mb_encode_numericentityでタグ...
-
$_SESSIONに二次元配列を使える...
-
複数行のデータのPOST処理に関して
-
自動で番号を振りたい
-
CSVデータの行数カウントをした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
C言語の配列をPush(追加)する...
-
php で1から100までの素数の表...
-
STLのvectorで作った配列をメン...
-
スカラーのベクトル微分
-
行列
-
Perlで重複行を削除したい
-
配列の要素(value)に、変数を...
-
特定の文からメールアドレスの...
-
forとかで連番の変数を一気に格...
-
C言語 最大値と最小値を求めて...
-
PHPでユニークIDを作る
-
CArrayの要素としてCStringArra...
-
fgetc関数について
-
読み(あ行~わ行)ごとに分け...
-
verilogで、配列の一部をタスク...
-
Pager::factory()の使い方がわ...
-
mallocで char *型の配列を確...
-
c言語 単位行列
-
多次元配列の重複削除
おすすめ情報