819 :
デフォルトの名無しさん:
[1] C言語プログラミング演習
[2] 問題文(含コード&リンク
整数を各要素の値とする、2つの2次元ベクトルが与えられたときに、それらの内積を計算する関数innerProduct()を使って、この2つのベクトルが直行しているかどうかを判定するプログラムを作成せよ。
2つの2次元ベクトル U(ux,uy)とv(vx,vy) の内積は,
ux × uy + vx + vy
で計算でき、2つのベクトルが作る角度は、
内積が正なら90°より小さく 内積が0なら 90° 内積が負なら90°より大きい
この考え方は3次元のベクトルでも同じである。上記のプログラムを、3次元のベクトルにも対応したものにすぐに修正できるようにするには、マクロを使うことが有効である。
どのようにすればよいかを考えよ。
2次元の場合
% ./innerProduct
input u[0]: 2 input u[1]: 6 input v[0]: 9input v[1]: -1
u=[ 2 6 ], v=[ 9 -1 ]
inner product is 12
The angle of the vectors is less than 90 degree.
%
3次元の場合
% ./innerProduct
input u[0]:input u[1]: 1input u[2]: 2input v[0]: 6input v[1]: 3input v[2]: -2
u=[ 0 1 2 ], v=[ 6 3 -2 ]
inner product is -1
The angle of the vectors is greater than 90 degree.
%
[3] 環境
[3.1] OS linux
[3.3] 言語: C
[4] 期限: 2010年7月14日まで
[5] その他の制限 特になし