![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
行列式を計算する関数をもちいてプログラムを見やすくしたいのですが、何回やっても値の渡し方がわかりません。
他にも逆行列のプログラムなどの渡し方も知りたいです。
以下が時ビンで考えたプログラムです。
#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ランキング
-
php で1から100までの素数の表...
-
C言語 最大値と最小値を求めて...
-
STLのvectorで作った配列をメン...
-
functionの中にfunction?
-
mallocで char *型の配列を確...
-
MYSQLとPHPによって取得する多...
-
PHPのセレクトボックスの初期値...
-
C言語の2次元配列における行・...
-
C言語の配列をPush(追加)する...
-
配列の比較
-
多次元連想配列 検索 削除 ...
-
配列の要素をキーにする
-
templateを使ったXOR swapのバ...
-
プログラミングのPythonのnoteb...
-
フォームのデータを受け取りに...
-
配列について
-
共通項を持つ配列同士を結合さ...
-
配列 一部除外してソート?
-
arrayをどうやって表示するのか?
-
連想配列で値が空だったら、要...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
特定の文からメールアドレスの...
-
CArrayの要素としてCStringArra...
-
C言語 最大値と最小値を求めて...
-
行列
-
読み(あ行~わ行)ごとに分け...
-
配列の要素(value)に、変数を...
-
C言語の配列をPush(追加)する...
-
STLのvectorで作った配列をメン...
-
php で1から100までの素数の表...
-
【PHP】配列のキー名の修正は可...
-
Perlで重複行を削除したい
-
fgetc関数について
-
CArrayのソート
-
ファイルの書き込みについて教...
-
配列の添え字が小数だとどうなる?
-
PHPのmin関数、「1」以上の数値...
-
forとかで連番の変数を一気に格...
-
delphi 2次元配列がわかりません
おすすめ情報