行列の和、積、乗算について(C言語)
まだC言語の勉強を始めて1か月の初心者なのですが、みなさんにお聞きしたいことがあります。
任意の行列に対して和、積、乗算の関数を作り出力するプログラムを
作りたいのですが、試しに和の関数を作ってビルトしてみたら、
31個もエラーが出て、困っています。
↓参考書を見ながら、自分なりに考えたプログラムです。
#include <stdio.h>
typedef struct matrix{
int m;
int n;
double data[100][100];
} MATRIX;
int main(void)
{
MATRIX a;
MATRIX b;
a.m=2;
a.n=3;
a.data[100][100]={{1,2,1},{2,3,3}};
b.m=2;
b.n=3;
b.data[100][100]={{2,3,1},{1,2,1}};
kekka=add_mat(MATRIX a,MATRIX b);
printf("和:%f,kekka.data);
//行列和関数
MATRIX add_mat(MATRIX a,MATRIX b){
MATRIX sum;
int i,j;
sum.m=a.m;
sum.n=a.n;
sum.data[100][100]={{0,0,0}{0,0,0}};
for(i=0;i<sum.m;i++){
for(j=0;j<sum.n;j++){
sum.data=(a.data)+(b.data);
return sum;
}
}
}
return 0;
}
おそらく相当ダメな感じなのでしょうが、エラー文を読んでも
なかなか解決できません。
ちなみに、積の関数は
mul_mat(MATRIX c,MATRIX a,MATRIX b){
int i,j,k;
for(i = 0; i < a.m; i++){
for(j = 0; j < b.n; j++){
for(k = 0; k < a.n; k++){
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
}
}
という風に考えました。みなさまのお力を借りたいです。
よろしくお願いします
お礼
数学的に見て、おかしいのですね。テキスト(はじめてのMaxima)に乗ってたとおりの行列の逆行列を計算すると、うまくいきました。 数学は専門でないもので、またこれからも、こんな馬鹿馬鹿しい質問をすると思いますが、乞許!