質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1439閲覧

ベクトル積計算プログラム

KeiD

総合スコア26

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/07/24 02:03

ベクトル積計算プログラム作成してますが

1番目のベクトル b のx,y,z成分を空白区切で入力
> 1 2 3
2番目のベクトル c のx,y,z成分を空白区切で入力
> 4 5 7

と入力すると

外積=(0.000000,0.000000,0.000000)

と正しく出力されません。
どう直せば正しく出力されるのか、ご存じの方ご教示お願い致します。

#include <stdio.h> #include <math.h> typedef struct { double x,y,z; } VECTOR; VECTOR cross(VECTOR b,VECTOR c); int main(){ VECTOR b,c,e; printf("1番目のベクトル b のx,y,z成分を空白区切で入力\n"); printf("> "); scanf("%lf%lf%lf",&b.x,&b.y,&b.z); printf("2番目のベクトル c のx,y,z成分を空白区切で入力\n"); printf("> "); scanf("%lf%lf%lf",&c.x,&c.y,&c.z); printf("\n"); printf("外積=(%f,%f,%f)\n",e.x,e.y,e.z); printf("\n# 正常終了 #\n"); return 0; } VECTOR cross(VECTOR b,VECTOR c){ VECTOR e; e.x = b.y*c.z-b.z*c.y; e.y = b.z*c.x-b.x*c.z; e.z = b.x*c.y-b.y*c.x; return e; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず関数crossを使ってください.

投稿2020/07/24 02:05

fana

総合スコア11634

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KeiD

2020/07/24 02:11

ありがとうございます。
fana

2020/07/24 02:17 編集

どういう反応なのか謎なので,念のため,もうちょっと丁寧に書いておきますか. あなたは関数crossの宣言と定義を記述しましたが,その関数を呼び出すことはありませんでした. eの要素は初期化も代入もなされていないので不定であり,それをそのまま出力したら,たまたま0であった. 本当にやりたいことは,外積の計算結果をeに代入してからそれを表示することであると思われる. なので,関数crossを用いる記述を追加すれば良いのでは?と思うわけです.
KeiD

2020/07/24 02:33

ありがとうございます。
fana

2020/07/24 02:41

(他の質問でもその調子みたいですが,まともな(情報量のある)反応をしないことにこだわっている人なのかな)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問