ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

C言語とC++言語コミュのベクトルの内積で関数を作る質問なのですが

  • mixiチェック
  • このエントリーをはてなブックマークに追加

C言語で要素数3のベクトルが二つあってv(1,2,3.)y(4,5,6)その内積を計算して返す関数をつくれという問題があるのですがベクトルの内積だけを計算するプログラムはできるのですがどうやって関数をつくればいいかわかりません、よければおしえてください。





コメント(11)

内積を実数型で返すように作ればよいのでは。

/*ベクトルを構造体として用意する*/
struct tg_vect{
double x;
double y;
double z;
};
typedef struct tg_vect vect;
double naiseki(vect v1, vect v2);

/*宣言終わり*/

こんな感じの関数を用意すればよいと思います。
実装はまあ適当に。
double v[2],y[2],ans;
int i;
for(i=0;i<=2;i++)
{v[i]=i+1;
y[i]=i+3;}
ans=naseki(v,y);

ということなんじゃないんですか・・??
学校の課題なら、たぶん

double *vect_new( int n )
{
int i;
double *vect;
vect = (double *)malloc((size_t) n*sizeof(double));
for(i=0;i<n;i++){
vect[i] = 0.0;
}
return(vect);
}

っていう、全要素がゼロのn次元ベクトル作成のサブルーチンを用意しとけば、今後かなり助かるかと。
>3
実数型は全bit0が0.0とは限らないとどこかで読んだ気が…
>>4
はい。そのとおり。プロセッサの実装に依存します。
氏には悪いですが、3に書いてあるような事を
してはいけません。

蛇足ですが
ベクトルの成分として与えられてる値がすべて整数なので
int型で渡してint型で返しても良いと思うんですが。
与える値が整数である限りは浮動小数点を使う必要無いですね。
>4
IEEE754 なら全ビット0で0.0で良さそう。
http://ja.wikipedia.org/wiki/IEEE754

でも、ちゃんと 0.0 を代入した方が可読性が良さそう。
double naiseki(const vect *v1, const vect *v2);
コンパイラの種類によっては
double naiseki(const vect &v1, const vect &v2);

実体のコピーは重いので〜ポインタか参照で渡す方がよいですよー
みなさんありがとうございます。returnで返すそうなのですが返したあとどうすればいいのでしょうか?
叩かれた・・(*´□`*)

解放は必要ですハイ。

void vect_free( double *vect )
{
free(vect);
}

どうぞ。

だぶるは

ans=naiseki(v,y);

の右辺にりたーんの数字が返されます。
だからansにその数字が代入されます。

では素人はこの辺でひっこんどきます・・

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

C言語とC++言語 更新情報

C言語とC++言語のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング