2次と3次との正方行列の逆行列を求める関数を作っています。2次と3次では、逆行列の求め方が異なるため、一つの関数でどちらも計算できるコードを作ることは難しいと思い、ひとまず、の逆行列を求める関数を作りました。しかし、aの絶対値が正しく認識されないようで、dt2[2][2]={{0,0},{0,0}}と表示されてしまいます。改善すべき点を教えていただきたいです。
やはり、3次は別に定義するしかないですか。
よろしくお願いいたします。
c
1#include <stdio.h> 2#include<stdlib.h> 3 4#define ARRAY_SIZE 2 5 6int gyaku(int dt1[2][2], int dt2[2][2]); 7 8int gyaku(int dt1[2][2], int dt2[2][2]) { 9 //二次の場合の逆行列 10 int a = 0; 11 int i, j = 0; 12 a = ((dt1[0][0] * dt1[1][1]) - (dt1[0][1] * dt1[1][0])); 13 int b = 0; 14 b = abs(a); 15 16 if (a = 0) { 17 printf("Error!\n"); 18 } 19 else { 20 for (i = 0; i < ARRAY_SIZE; i++) { 21 for (j = 0; j < ARRAY_SIZE; j++) { 22 23 dt2[i][j] = (dt1[i][j] / b); 24 } 25 } 26 } 27 28 return dt2[i][j]; 29} 30 31int main(void) { 32 int dt1[2][2] = { {2,4}, {5,6} }; 33 int dt2[2][2] = {0,0}; 34 35 gyaku(dt1, dt2); 36 37 for (int i = 0; i < ARRAY_SIZE; i++) { 38 for (int j = 0; j < ARRAY_SIZE; j++) { 39 printf("%2d", dt2[i][j]); 40 } 41 printf("\n"); 42 } 43} 44
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/06 02:48 編集
2019/01/06 03:06 編集
2019/01/06 13:59