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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

1044閲覧

試行回数を10^6回行う方法と面積の算出方法について教えていただきたいです

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/07/28 05:01

編集2021/07/29 05:16

⑴ 3 つの 3 次元位置ベクトルを引数にとり,それらを頂点
とする三角形の面積を算出する以下の関数を作成しなさ
い(1 行で済みますが,わざわざ面積を求める関数を作成
することとし,main の中で直接面積を算出することはし
ないでください).
double Area(Vec3 t[3])
⑵ 頂点ベクトルの z の値を 0 として xy 平面内に制限しな
さい.また,0 から 1 までの値を発生する一様乱数
drand48() を用いて,3 つの頂点の位置座標を算出しな
さい.
⑶ 試行回数は 10^6 回としなさい.
⑷ 一様乱数の初期化関数 srand48(seed) の seed には53を与えなさい.
⑸ 作成する関数は Area() と main() だけとし,ベクトルの
計算には vector.h で定義された関数群を用いること(イ
ンクルードする).

発生している問題・エラーメッセージ

ここから先をどうしたら良いのかわかりません。
エラーメッセージ
この時点での実行結果は
$ ./a
0.323350
0.093197
0.233986
となっています。

該当のソースコード

#include <stdio.h> #include <stdlib.h> #include <time.h> #include "vector.h" double Area(Vec3 t[3]) {Vec3 va,vb; double S; va=vsub(t[1],t[0]); vb=vsub(t[1],t[0]); S=vabs(voprod(va,vb))/2; return S; } int main(int argc, char **argv) { int i, seed = (53); if (argc > 1) seed = atoi(argv[1]); srand48(seed); for (i = 0; i < 3; i++) printf("%f\n", drand48()); return 0; }

試したこと

この時点での実行結果は
$ ./a
0.323350
0.093197
0.233986
となっており3つの頂点の位置座標を求めることはできていると思います。

しかしここから先の「試行回数を10^6回行う」方法と、三角形の面積を算出する方法がわかりません。
どうか教えていただけると嬉しいです。よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Cプログラミングでemacsを使用しています。
ここにより詳細な情報を記載してください。

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

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

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

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

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

ozwk

2021/07/28 05:15

* z座標を0に固定した上で座標を3つとあるので、z成分が0で、x,yが乱数で決まるVec3 を3つ用意しろと言っているはずです。 * 問題のどこにも「面積を求めろ」とは書いてありません。
y_waiwai

2021/07/28 05:22

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
fiveHundred

2021/07/28 06:48

質問を勝手に差し替えないでください。 自動メッセージにもある通り「意図的に内容が抹消された質問」という禁止行為とほぼ同じ行為です。
K_3578

2021/07/28 06:53

退会すると思ったんだよなぁ・・・
fana

2021/07/28 08:04

(コードの実装がどうのとか言う前に,「3次元のベクトル」っていう言葉の意味から学んでくる必要があるものと思われた)
guest

回答1

0

3つの頂点の位置座標を求めることはできていると思います。

どう見てもできていません.
てきとーに数値を3つ表示することが「3つの頂点の位置座標を求める」という意味になるんですか?
1個の頂点の座標はいくつの数値から成るのか? という点からわからないのですか?

「試行回数を10^6回行う」方法

あなたのコードに for (i = 0; i < 3; i++) という記述があり,これが「3回行う方法」だとしたら,「10^6回行う方法」も自明では.

三角形の面積を算出する方法がわかりません。

自分で三角形の面積を求めるための関数を書いているのに「算出する方法がわからない」ハズが無い.
せっかく関数を作ったんだから呼べば良くないですか?
(まぁ,関数の中身の実装は間違っているのだが.ちゃんと3つの頂点のデータを全部使おうぜ,っていう.)

if (argc > 1) seed = atoi(argv[1]);

何故わざわざ指定されていない余計なことをするんですか?

投稿2021/07/28 05:40

fana

総合スコア11996

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問