質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Q&A

解決済

3回答

4234閲覧

C言語 N次正方行列の行列式を求めたいです

Hayato0511

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

0グッド

0クリップ

投稿2021/06/21 16:32

前提・実現したいこと

C言語 N次正方行列の行列式を求めたいですがすべて0が返されてしまいます
コードの訂正をお願いしたいです

発生している問題・エラーメッセージ

すべて0が返されてしまう

該当のソースコード

#include <stdio.h> #include <math.h> int main(void) { int i,j,k,N; printf("Nを入力してください"); scanf("%d",&N); double M[N][N],det=1.0,buf; for(i=1;i<=N;i++){ for(j=1;j<=N;j++){ M[i-1][j-1]=sqrt(i+j)/(i*j); } } //三角行列を作成 for(i=0;i<N;i++){ for(j=0;j<N;j++){ if(i<j){ buf=M[j][i]/M[i][i]; for(k=0;k<N;k++){ M[j][k]-=M[i][k]*buf; } } } } //対角部分の積 for(i=0;i<N;i++){ det*=M[i][i]; } printf("%f\n",det); return 0; }

補足情報(FW/ツールのバージョンなど)

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

思考停止せずにデバッグして下さい。
途中経過を確認すると一発で分かりますよ。

C

1#include <stdio.h> 2#include <math.h> 3 4int main(void) { 5 int i,j,k,N; 6 printf("Nを入力してください"); 7 scanf("%d",&N); 8 printf("\n"); 9 double M[N][N],det=1.0,buf; 10 for(i=1;i<=N;i++){ 11 for(j=1;j<=N;j++){ 12 M[i-1][j-1]=sqrt(i+j)/(i*j); 13 } 14 } 15 16 //三角行列を作成 17 for(i=0;i<N;i++){ 18 for(j=0;j<N;j++){ 19 if(i<j){ 20 buf=M[j][i]/M[i][i]; 21 for(k=0;k<N;k++){ 22 M[j][k]-=M[i][k]*buf; 23 } 24 } 25 } 26 } 27 28 //対角部分の積 29 for(i=0;i<N;i++){ 30 det*=M[i][i]; 31 printf("%d %lf\n", i, M[i][i]); 32 } 33 34 printf("%f\n",det); 35 return 0; 36 } 37 38出力結果 39Nを入力してください10 400 1.414214 411 -0.030330 422 -0.000388 433 -0.000011 444 -0.000000 455 -0.000000 466 -0.000000 477 -0.000000 488 -0.000000 499 -0.000000 50-0.000000

投稿2021/06/22 01:26

kaina

総合スコア418

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hayato0511

2021/06/22 04:41

思考停止せずにデバックで自己解決できるよう努めていきたいと思います。 ありがとうございます。
kaina

2021/06/22 04:52

頑張って下さい! 尚、細かい話ではありますが「デバック」では無く、「デバッグ」です。
Hayato0511

2021/06/22 05:08

ご指摘ありがとうございます。
guest

0

デバッガが使えるんですから、途中で実行を止めて変数の値を見ていきましょう。
そうすればどこでおかしくなってるのかわかるでしょう

投稿2021/06/21 21:29

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hayato0511

2021/06/22 04:41

デバッガの存在を教えてくださりありがとうございます。 初心者脱却できそうです。
guest

0

ベストアンサー

通常にコンパイルして実行するとゼロではない結果が返ってきました

shell

1$ gcc -lm -o det det.c 2$ ./det 3Nを入力してください1 41.414214 5$ ./det 6Nを入力してください2 7-0.042893 8$ ./det 9Nを入力してください3 100.000017

投稿2021/06/22 00:15

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hayato0511

2021/06/22 04:40

N=6,7を代入していたため、0が返されていたようです。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問