C言語関係掲示板

過去ログ

No.117.行列の掛け算


No.677

行列の掛け算
投稿者---あきな(2001/12/09 21:45:28)


行列aと行列bの掛け算をポインタを使って求めたんですがうまく
出来ません。どこを修正すればよいでしょうか?
#include <stdio.h>
main()
{
int a[4][4]={{1,2,3,4},{5,6,7,8},{9,5,4,3},{2,1,6,7}};
int b[4][4]={{5,6,8,7},{9,3,4,2},{1,5,8,4},{2,2,6,3}};
int c[4][4],*a_pnt,*b_pnt,*c_pnt,i,j,k,sum;

a_pnt=&a[i][j];
b_pnt=&b[i][j];
c_pnt=&c[i][j];

printf("a=\n");
for(i=0;i<4;++i){
for(j=0;j<4;++j){
printf("%4d",*(a_pnt+i*4+j));
}
printf("\n");
}

printf("b=\n");
for(i=0;i<4;++i){
for(j=0;j<4;++j){
printf("%4d",*(b_pnt+i*4+j));
}
printf("\n");
}

for(i=0;i<4;++i){
for(j=0;j<4;++j){
sum=0;
for(k=0;k<4;++k){
sum=sum+*(a_pnt+i*4+k)**(b_pnt+k*4+j);
}
*(c_pnt+i*4+j)=sum;
}
}

printf("c=\n");
for(i=0;i<4;++i){
for(j=0;j<4;++j){
printf("%4d",*(c_pnt+i*4+j));
}
printf("\n");
}
}



No.678

Re:行列の掛け算
投稿者---ともじ(2001/12/09 22:25:19)


こんばんは。

>行列aと行列bの掛け算をポインタを使って求めたんですがうまく
>出来ません。どこを修正すればよいでしょうか?

>a_pnt=&a[i][j];
>b_pnt=&b[i][j];
>c_pnt=&c[i][j];

iとjが未定義ですよね。

・i=j=0; とするか、

・a_pnt=&a[0][0];
 b_pnt=&b[0][0];
 c_pnt=&c[0][0]; とするか、

・a_pnt=a[0];
 b_pnt=b[0];
 c_pnt=c[0]; としてみてください。

No.680

Re:行列の掛け算
投稿者---あきな(2001/12/09 23:10:31)


ともじさんアドバイスありがとうございました。
実行できるようになりました。
大学でプログラムの授業があるんですけどポインタの
ところは難しいですね。覚えるのが大変です。。。
また質問することがあると思うんでよろしくお願いします。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.01.11
Copyright(c) 2000-2002 TOMOJI All Rights Reserved