dポイントプレゼントキャンペーン実施中!

現在、3次元ベクトルの外積計算をするプログラムを作成を行っています。

プログラムの仕様で
(1)3次元ベクトルは、3成分をもつ配列として扱うこと

(2)外積計算をする関数を作成すること。ただし、この関数は
2つの入力ベクトルと1つの出力ベクトル(=外積)を扱うものとする。(ポインタ渡し)

(3)main関数内で、入力である2つの3次元ベクトルを設定し、外積計算の関数を呼ぶ。

(4)2つの入力ベクトル、およびその外積を表示すること。

を条件に作成しているのですが、どうもうまく作れません。
どのようにプログラムを作成すればよいのか
参考に教えて頂けるとありがたいです。

よろしくお願いします。

A 回答 (2件)

少しは学習努力を提示すべきです。


http://yosshy.sansu.org/gaiseki.htm



#include <stdio.h>

struct vector {
float x;
float y;
float z;
};

//使用関数のプロトタイプ宣言
void cross_product(struct vector *a, struct vector *b, struct vector *c);

int main(void)
{
//入力である2つの3次元ベクトル(実数値)を設定
struct vector a={1.0, 2.0, 1.0};
struct vector b={-2.0, 0.5, 1.0};
struct vector c;
//入力ベクトルを表示
printf("vector a(%f, %f, %f)\n", a.x, a.y, a.z);
printf("vector b(%f, %f, %f)\n", b.x, b.y, b.z);
//外積計算の関数をコール
cross_product(&a, &b, &c);
//外積を表示
printf("cross product c(%f, %f, %f)\n", c.x, c.y, c.z);
return 0;
}

//何も値を返さない void型関数
void cross_product(struct vector *a, struct vector *b, struct vector *c)
{
c->x = a->y * b->z - b->y * a->z;
c->y = a->z * b->x - b->z * a->x;
c->z = a->x * b->y - b->x * a->y;
}
    • good
    • 1

「どうもうまく作れない」ってことは, 「それっぽいものを作っているつもりなんだけど正しい動作をしない」ってこと? もしそうなら,

そのプログラムを出して突っ込まれた方が勉強になるんじゃないかなぁ.
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A