No.2ベストアンサー
- 回答日時:
惜しいなぁ。
ミスのせいですねぇ。殆どケアレスミスの範疇です。
まずはプロトタイプのここ、から。
> double op(double v1[], double v2[], double v3[]);
ここ、あとで発覚するんだけど、発想的には「配列自体を返したい」わけでしょ?
そうすると、double型が返り値になる、って指定はマズいです(何故ならdoubleは単なる数値だから)。ここはdouble型のポインタを返すのが正解。
つまり、
double* op(double v1[], double v2[], double v3[]);
にしないといけません。
> int i;
main内では変数iは使われてないので要りません。
> printf(" outer product = (%f, %f, %f)\n", op(v1, v2, v3));
ここがウッカリさん。
op(v1, v2, v3)が配列を返すのだったら、printfの書式設定(ここでは(%f, %f, %f)とされている)、は残念ながら配列をアンパックして表示する、なんつー、気の利いた機能は持ってないのです。
何故ならC/C++はかなりアホだから、です。
それより、opと言う関数はv3を破壊的に変更する、って性質を持ってるので、このprintfの前でopを呼んでv3を書き換えちゃうのが正解です。何故ならopを呼んだ時点でv3には既に答えが入ってる。
従って、ここは二行にして、
op(v1, v2, v3);
printf(" outer product = (%f, %f, %f)\n", v3[0], v3[1], v3[2]);
とするのが正解です。
あとは、
double* op(double v1[3], double v2[3], double v3[3]) // 返り値はdoubleのポインタ型
{
// double v3は要らない。引数に与えられている
v3[0] = v1[1] * v2[2] - v1[2] * v2[1];
v3[1] = v1[2] * v2[0] - v1[0] * v2[2];
v3[2] = v1[0]*v2[1] - v1[1] * v2[0];
return v3; // 名前を返すだけで良い。
}
以上、ですね。
No.3
- 回答日時:
まったく本題とは関係ないけど v3[3] を返すのは (意味的に) まずい, と認識できるようになるといいなぁ.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 内積、外積計算 このa'、b'、c'ベクトルの内積と外積の計算の仕方を教えて欲しいです。 1 2023/05/28 02:30
- 数学 整数問題7 3文字の整数問題 5 2023/04/09 09:56
- その他(悩み相談・人生相談) 4泊の海外旅行に知らない人がついてきます。ありえなくないですか? 8 2023/04/18 20:23
- 建設業・製造業 河川の積算の勉強に役立つ本はありませんか? 例えば数量計算書や図面から間違いがないか確認し、 確認後 2 2023/02/09 19:40
- Visual Basic(VBA) VBAプログラム初心者です。 以下の問題のプログラムを表記してみたのですが、実行するためには、どこを 4 2023/01/19 20:04
- 転職 積算業務について 1 2023/06/28 14:27
- 数学 不定積分を求める問題です。 3x/√2x-1 の不定積分を求めたいのですが、画像のように解いたところ 1 2023/05/13 18:05
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- 計算機科学 空系列を用いたもので、 2 2022/12/12 01:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語で、繰り返し文の中で、0....
-
プログラムでの数字につく”f”の...
-
C言語 関数プロトタイプ宣言の...
-
doubleの変数にintとintの割り...
-
float型とdouble型の変数の違い...
-
2分法で方程式の複数の解を自...
-
C言語の型による処理速度の違い
-
C#イベント中の戻り値の設定の...
-
C 開放してるのにエラー(doubl...
-
difftime()について
-
型について
-
ボール同士の衝突
-
C言語 入力した数値の平均値の...
-
C言語
-
インデックスが配列の境界外です.
-
C言語のマクローリン展開ローラ...
-
C言語を実行すると-infが出てき...
-
関数におけるif文とreturn文に...
-
int とdoubleの比較
-
MATLABで画像のヒストグラムを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
doubleの変数にintとintの割り...
-
float型とdouble型の変数の違い...
-
c言語で、繰り返し文の中で、0....
-
C言語を実行すると-infが出てき...
-
C言語 関数プロトタイプ宣言の...
-
C 開放してるのにエラー(doubl...
-
C言語の型による処理速度の違い
-
至急です! マクロ定義で #defi...
-
関数におけるif文とreturn文に...
-
c言語のプログラミングについて...
-
2分法で方程式の複数の解を自...
-
-1.#IND00と出てしまうのですが...
-
doubleは常に%lfとするべきなのか
-
C言語のpow関数の不具合
-
C言語で-23乗を取り扱うには
-
C言語で台形公式を使った二重積...
-
Cで3乗根を求める方法
-
sin(x)の近似について
-
2次方程式の解を求めるプログ...
おすすめ情報