前提・実現したいこと
C言語でmatrix,datというテキストファイルで与えられた5×5行列の行列式を計算しようとしています。
ファイルから行列を読みとり配列に格納しましたが、
その後三角行列を作成し対角部分の積を計算したさいに計算結果が合いません。
どの部分がおかしいのでしょうか?
正しい答えは9262です。
該当のソースコード
C言語 #include<stdio.h> #include<math.h> #include <stdlib.h> int main(void){ int matrix[5][5] ; int det=1,x; int n=5; int a,i,j,k; FILE *fp; fp=fopen("matrix.dat","r"); if(fp==NULL){ puts("matrix.datは開けません"); } for(a=0;a<5;a++){ fscanf(fp,"%d %d %d %d %d",&matrix[a][0],&matrix[a][1],&matrix[a][2],&matrix[a][3],&matrix[a][4]); printf("%d,%d,%d,%d,%d\n",matrix[a][0],matrix[a][1],matrix[a][2],matrix[a][3],matrix[a][4]); } for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(i<j){ x=matrix[j][i]/matrix[i][i]; for(k=0;k<n;k++){ matrix[j][k]=matrix[j][k]-matrix[i][k]*x; } } } } for(i=0;i<n;i++){ det=det*matrix[i][i]; } printf("%d ",det); fclose(fp); return 0; } -------------------------------
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 04:44
2021/08/21 04:49
2021/08/21 05:55 編集
2021/08/21 05:55