0

プログラムは、三角形の面積を計算するように設定されています。三角形の辺 (a、b、c) は入力です。このコードは特定の数値でのみ正常に機能し、他の数値では正常に機能しません。例えば

a、b、c がそれぞれ 2、3、4 の場合、コードは OK です。2,3,5 0.00 の出力は間違っています。2,3,6 プログラムは数学ドメイン エラーを出力します

def main():
    print "Program calculates the area of a triangle."
    print
    a, b, c = input("Enter triangle's sides length: ")
    s = (a+b+c) / 2.0
    area = sqrt(s*(s-a)*(s-b)*(s-c))
    print "The area is %.2f" % area

main()

何が悪いかわかりますか?

4

2 に答える 2

7

式は機能しています。少しずれているのはあなたの期待です。

2,3,5 0.00 の出力は間違っています。

本当に?では、辺の長さが 2、3、5 の三角形を描くことができますか? :^) 唯一の可能性は、縮退した三角形です。つまり、線 (3 インチのセグメントに結合された 2 インチのセグメント) であり、明らかに面積がゼロです。

3 つの数字のすべての組み合わせが三角形として機能するわけではありません。a+b>cb+c>a、およびが必要ですc+a>b。(2,3,6) の場合、

3+6 > 26+2 > 3、しかし2+3 < 6、だからそのような三角形はありません。

于 2013-01-30T15:54:44.503 に答える
1

あなたのコードは正当なようです。数学でテストケースを見てみましょう:

ケース 1:

a=2; b=3; c=5;

s=(2+3+5)/2.0
 = 5.00

そして、あなたはarea = sqrt(s*(sa) (sb) (sc))を持っています

数式に (sc) が含まれていることを確認してください。(5.00 - 5) = 0 となります。この場合、面積 = 0.00 で、これは正しいです。

ケース 2:

a=2; b=3; c=6;

s=(2+3+6)/2.0
 = 5.50

(sc) に関しては、(5.50 - 6) = -0.5 です。

負の数の sqrt を指定すると、「数学ドメイン エラー」が発生します。

上記の結果は、これらの数が正当な三角形を形成できないことを意味します。コードや数式に問題はありません。ただし、次回コードをテストする前に、テスト ケースが正当であることを確認してください。

お役に立てば幸いです=]

于 2013-01-30T16:26:50.717 に答える