構造体について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
けるびん

構造体について

#1

投稿記事 by けるびん » 17年前

課題で三角形の各x、y座標を入力し、その面積を構造体を用いたプログラムで求めよ。というのが出題されたのですが、コンパイルは通ったものの、面積が合いません。。。
プログラム自体初心者なので、基本的なこと、もしくは単純なミスだとは思いますが。。

どこがおかしいのかご指南よろしくおねがいします

*****************

OS LINUX KNOPPIX
コンパイルはgccで行なっています

*****************

box

Re:構造体について

#2

投稿記事 by box » 17年前

何はさておき、ソースコードを見せてください。

toyo

Re:構造体について

#3

投稿記事 by toyo » 17年前

3個の座標を入力してるのに
calc_triangle(XYdata a, XYdata b);
では2個しか使ってないから?

>>boxさん
ソースはフロッピーのアイコンをクリックすると見られます。

やそ

Re:構造体について

#4

投稿記事 by やそ » 17年前

三角形の面積の公式は
「底辺×高さ÷2」と小学校で習いますが、他にも公式があります。

面積 = (1/2) × 2辺の掛け算 × その間の角のサイン

※(1/2)・・・2分の1のつもり^^

でも求められます。

1.1辺の長さと両端の角度
2.2辺の長さとその間の角度
3.3辺の長さ

のどれかが分かればそれぞれ別の公式を用いて面積を求めることが出来ます。

今回は2番を用いて求めようとされているようです。
が、辺A(len_a)、辺B(len_b)を求める処理ですが・・・

ピタゴラスの定理では(ここで説明する定理の辺Aは問題の辺Aとは関係有りません)
辺Aと辺Bの間の角度が90度とすると、
 (辺Cの長さ)^2 = (辺Aの長さ)^2 + (辺Bの長さ)^2
ですよね。

なので座標(点)でしかないa.x、a.yを2乗してもだめじゃないでしょうか? 
点aと点bを結ぶ辺Aを求めるならば・・・
1. a.y-b.yにて差を求め絶対値を取ります。(点aと点bの間の高さが求められます。辺Xとする)
2. a.x-b.xにて差を求め絶対値を取ります。(点aと点bの間の横軸の長さが求められます。辺Yとする)
3. 辺A^2=辺X^2 + 辺Y^2
4. 出た答えの平方根を取る。

により求まります。
これを応用して考えてみてください。

それと、toyoさんの言われるとおり2点しか渡していないと2辺は測定できません^^;
ちゃんと3点渡しましょうね^^
(間違っていたらゴメンナサイ((((((^_^;)

box

Re:構造体について

#5

投稿記事 by box » 17年前

これは大変失礼な投稿をしてしまいました。
申し訳ございません。

tk-xleader

Re:構造体について

#6

投稿記事 by tk-xleader » 17年前

ちなみに、3辺が求まっている三角形の求め方として、「ヘロンの公式」があります。具体的には…

3辺をそれぞれa,b,cとすると,三角形の面積Sは…
[color=Silver" size="5]T=(1/2)×(a+b+c)ならば
   /___________________
S=/  T(T-a)(T-b)(T-c)
[/color]
という方法があります。

やそ

Re:構造体について

#7

投稿記事 by やそ » 17年前

ヘロンの公式、ありましたね^^

3辺の長さが分かっていれば、角度は問わず面積が出せるなんて、すばらしい公式ですね。

まあ、どの公式を使うかはけるびんさんの自由だ~!!(by犬井ヒロシ)

けるびん

Re:構造体について

#8

投稿記事 by けるびん » 17年前

みなさん返信ありがとうございます。

完全に勘違いしてましたね。座標は3こ入力してるのに、関数で2こしか引数書いてないなんて。。

あれから友達にやり方を聞いたところ、

友達のプログラムでは基本となる座標を原点に一度合わせてから計算するというものでしたが、

3辺さえ分かればヘロンの公式を使い、角度無しでいけるという事なので

ヘロンの公式使ってやり直しをしてみようと思います♪



ヘロンの公式 is Freedom(笑)

PK

Re:構造体について

#9

投稿記事 by PK » 17年前

|x1 x2 x3|
S = |y1 y2 y3| * 0.5
    | 1  1  1|
もシンプルで良いですよ。(x1,y1),(x2,y2),(x3,y3)を頂点とする三角形の面積が|S|です。

管理人

Re:構造体について

#10

投稿記事 by 管理人 » 17年前

余計な事ですが、
携帯で投稿すると、アイコンが表示されません。
なので、投稿がPCからか携帯からかわかります。
そして、携帯から見ていると、添付ファイルが見れないので、投稿にファイルが添付されているかどうかわかりません。なので誤解されたのだと思います。
すみませんが、掲示板の仕様のようなのでよろしくお願いしますm(_ _)m

閉鎖

“C言語何でも質問掲示板” へ戻る