ページ 11

c言語 行列の積

Posted: 2009年11月21日(土) 14:36
by えん
こんにちわ 行列の積をしています。
自分で
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
float a[2][3]/*={{1,2,3},{4,5,6}}*/;
float b[3][4]/*={{1,2,3,4},{5,6,7,8},{9,10,11,12}}*/;
float c[2][4];
int i,j,k;
for(i=0; i<2;i++){
for(j=0; j<4;j++){
c[j]=0.0;
for(k=0;k<3;k++){
c[j]+=a[k]*b[k][j];
}
}
}
for(i=0;i<2;i++){
for(j=0;j<4;j++){
printf("%6.1f",c[j]);
}
printf("\n");
}
}
まで、できたのですが要素をrandを50~-50の間とするというので詰まっています。
rand()%50をどっかに埋めればいいと思うのですがアドバイス願います。

Re:c言語 行列の積

Posted: 2009年11月21日(土) 14:56
by non
なぜ、行列の積で乱数が必要なのか説明願います。

Re:c言語 行列の積

Posted: 2009年11月21日(土) 15:01
by えん
すいません。行列aとbを関数randを利用して初期化したいのです。

Re:c言語 行列の積

Posted: 2009年11月21日(土) 18:41
by box
今のコードでは、「どんな」aとbの積がcであるかがわかりません。
aとbに乱数を使うとなおさらです。
cの内容が「本当に」正しいかが検証できません。
それでもよいのですか?

Re:c言語 行列の積

Posted: 2009年11月21日(土) 23:42
by えん
行列の出力がないとよくないですね。
a、bを出力した上で、計算するようにお願いします。

Re:c言語 行列の積

Posted: 2009年11月22日(日) 00:00
by softya
>行列の出力がないとよくないですね。
>a、bを出力した上で、計算するようにお願いします。

そこは、えんさんがプログラムされたほうが良いと思います。
あくまでも、この掲示板のスタンスはお手伝いするといった方向ですので。Cの要素を表示できているのならa,bも難しくありませんよね?

本来の質問自体の疑問として行列の値はfloatなんですが、rand()%50では整数しか扱えません。その精度でよろしいのですか?

Re:c言語 行列の積

Posted: 2009年11月22日(日) 08:52
by non
>50~-50の間
-50<= rand <=50 なら
(rand() % 101) - 50