- ベストアンサー
三角形の外接円の中心と半径を出力するcプログラム
- この問題で、sample inputのデータを入力すると問題なく出力されるのですが、コードを提出するとなぜかWrong Answer となってしまいます。
- どこがおかしいのか教えてください。
- #プログラミング #C #三角形 #外接円 #コード
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
単純に「計算式が間違っている」です。 テストパターンとして 6 0.0 0.0 0.0 2.0 2.0 2.0 0.0 0.0 2.0 2.0 0.0 2.0 0.0 2.0 0.0 0.0 2.0 2.0 0.0 2.0 2.0 2.0 0.0 0.0 2.0 2.0 0.0 0.0 0.0 2.0 2.0 2.0 0.0 2.0 0.0 0.0 を使います。 (0.0 0.0) ( 0.0 2.0) (2.0 2.0) これは、サンプルにあった座標と同じ外接円に接する三角形になります。 その座標を入れ替えた全6通りです。全て同じ三角形です。 ということは、サンプルと同じに 1.000 1.000 1.414 になるはずです ですが、実際には違う値になります。 どこに間違いがあるか、探すのは面倒なのでやっていません。 直したら、いろんなパターンを入力して確認してみましょう。 中心(x0,y0) 長さr0 の円上の点(xa,ya) は xa=x0+r0 * cos(Ta) ya=y0+r0 * cos(Ta) で求められます。 x0,y0,r0,Ta,Tb,Tc を乱数で決めれば、A,B,Cの3点の座標が求まります。 その順列全てを並べれば、テストパターンの完成です。 ・全部の順列で答えが(ほぼ)同じ ・その答えが元のx0,y0,r0と(ほぼ)同じ ということで確認することができます。
その他の回答 (3)
- maiko0318
- ベストアンサー率21% (1483/6969)
>scanf("%d",&n); ここで何を入れましたか? >Wrong Answer これはプログラムを実行して表示されたものと違いますよね。 どこからどのように表示されたのですか?
- chie65536(@chie65535)
- ベストアンサー率44% (8800/19959)
提出してWrong Answerと評価されるとしたら、割り算で除数が0になるケースを見てない、くらいかな? 除数が0になる、つまり、3点が直線状に並んでいる場合、除算は行ってはいけません。 あと、各値の範囲が指定されているけど、その範囲を逸脱している場合のエラーチェックもありません。 その辺りが「Wrong Answerと評価される理由」なんじゃないかな?
お礼
もう一度確認してみます。
- maiko0318
- ベストアンサー率21% (1483/6969)
>Wrong Answer プログラムにない文字は出ません。 >コードを提出すると どう入力したのか書かないと検証できません。
補足
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0010&lang=jp AOJのこの問題に、質問のコードを入力すると、Wrong Answerと返ってきてしまいます。
お礼
ありがとうございます、計算からやり直してみます。