• ベストアンサー

Visual Basicを使って三平方の定理の計算式を表現するにはどうしたら良いのでしょうか?

Visual Basic.net 2003を使っているのですが、 For...Next loopなどをを使って、 三平方の定理のパターンを全部(A<300 B<300 H<300の条件で)だすという プログラムを作りたいのですが、どうしたらよいのかわからなくて困っています。 一応すべて整数でというのが条件なので、 dim A, B, H, as interger A^2 + B^2 = H^2 で、このときどこかに、 For nextなどをはさんで、 AやBの値を増やしていくと思うのですが…。。 もう5時間以上格闘しても答えが出なく、 ここに投稿してみました。 どなたか、回答よろしくお願いいたします。。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

'#3は、間違いでした、すみません。<(_ _)> Imports System Class Sample Shared Sub Main() '条件:A<300,B<300,H<300 でH*H=A*A+B*B の成り立つものを列挙する Dim A, B, H as Integer For A = 1 To 299 Dim maxB as Integer ' 上限としての仮のB maxB = CInt(Math.Sqrt(299*299 - A*A)) For B = 1 To maxB H = CInt(Math.Sqrt(A*A+B*B)) If H*H = A*A+B*B Then Console.WriteLine("A:{0},B:{1},H:{2}", A, B, H) End If Next Next End Sub End Class

yumikochan
質問者

お礼

では、こちらで試してみます。わざわざありがとうございました!

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

質問の意味がピタゴラス数(正整数の3組)を求めるとすると、下記でやって見ました。 3平方の定理が3辺に成り立つとA+B-C>0は成り立つ立ったと思うので。 テーマが違ってたら、無視してください。 C<299の条件はかけてません。 Sub test05() Dim A, B As Integer i = 1 For A = 1 To 299 For B = 1 To 299 If A < B Then Exit For h = A ^ 2 + B ^ 2 If Sqr(h) = Int(Sqr(h)) Then Cells(i, "A") = A Cells(i, "B") = B Cells(i, "C") = Sqr(h) i = i + 1 End If Next B Next A End Sub VBAでやりましたが、SQR関数をNETなら Math.Sqrtに変えればよいと思います。 表示をConsole.WriteLine等でやってみてください。

yumikochan
質問者

お礼

わかりにくい質問ですみませんでした。。。初心者なもので…。質問の意味は、私が意味しているものとは違うと思います。わざわざ回答していただいてありがとうございます。こんな私に対してたくさんの回答をしていただいて、本当に感謝しています。みなさん、本当にありがとうございます♪

  • Dipjp
  • ベストアンサー率0% (0/1)
回答No.5

Sub Main() FileOpen(1, "SampleFile.txt", OpenMode.Output) Dim A, B As Integer Dim H As Double For A = 1 To 299 For B = 1 To 299 H = Math.Sqrt(A ^ 2 + B ^ 2) If (H - Int(H) = 0.0) And (H < 300) Then Print(1, "A=", SPC(0), A, SPC(3 - A.ToString.Length)) Print(1, "B=", SPC(0), B, SPC(3 - B.ToString.Length)) Print(1, "H=", SPC(0), H) PrintLine(1) End If Next B Next A FileClose(1) End Sub SampleFile.txtに結果を出力します。 いかがでしょうか。

yumikochan
質問者

お礼

見るからに難しそうなプログラミングで少々びっくりしています。。。今、入門の授業をとっているのですが、プログラミングは奥が深いですね・・・。明日、学校で試してみようと思います。ありがとうございます!

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

'こんな感じでどうでしょう '--------------------------------------------------------------- Imports System Class Sample Shared Sub Main() '条件:A<300,B<300,H<300 でH*H=A*A+B*B の成り立つものを列挙する Dim A, B, H as Integer For A = 1 To 299 Dim maxH as Integer ' 上限としての仮のH maxH = 299 - A*A If maxH < 1 Then Exit For maxH = CInt(Math.Sqrt(maxH)) For B = 1 To maxH H = CInt(Math.Sqrt(A*A+B*B)) If H*H = A*A+B*B Then Console.WriteLine("A:{0},B:{1},H:{2}", A, B, H) End If Next Next End Sub End Class

yumikochan
質問者

お礼

このような難しいプログラミングはまだやったことがないのですごく興味深いです。明日、学校に行って試してみようと思います。ありがとうございます!

回答No.2

No1です。 失礼しました。 A<300 B<300 ですので、 For A = 1 To 299 For B = 1 To 299 です。 A=300 or B=300の時は、H>300になりますので関係ないですが

回答No.1

手元に、VBAしかないものでVBAで作りました。 VB.NETでも問題ないと思います。 Sub aaa() Dim A As Long Dim B As Long Dim H As Long 'A^2 + B^2 = H^2 For A = 1 To 300 For B = 1 To 300 H = A ^ 2 + B ^ 2 If H ^ 0.5 < 300 Then Debug.Print A, B End If Next B Next A End Sub では?

yumikochan
質問者

お礼

回答してくださってありがとうございます。この方法は学校で習った形に近いので自分でも試してみることができると思います。明日、学校に行って試してみます。本当にありがとうございました。

yumikochan
質問者

補足

大分時間がたったのにまだまだできない初心者です。。。 すみませんが、この結果ををListBoxに表示したい場合はどうすればいいのか教えていただけませんか?お手数をおかけします。よろしくお願いします!!

関連するQ&A

  • また、三平方の定理?

    教えてください。 まだ、中学2年です。ただ三平方の定理は知っています。 円があります。 3点A・B・Cは円の周上の点で、AB=AC=6cmである。辺BCの延長上の点をDとし、線分ADと円との交点をEとする。ADは何cmになるか? 三平方の定理を使うのでしょうか? 宜しくお願いします。

  • 三平方の定理平方根の定理の証明で

    http://contest2002.thinkquest.jp/tqj2002/50027/index.html 上記URLのサイトの平方根の定理の証明で c^2 =(a+b)^2 - 1/2ab×4 = (a^2+2ab+b^2)ー2ab = a^2+b^2 (上記載の「^2」は二乗、「1/2」は二分の一 です。) この式の2行目になぜ +2ab がでてくるのかが??わからないでいます。 a二乗とb二乗は(a+b)^2 で a^2+b^2、 - 1/2ab×4が-2abですよね?(おそらくここが間違えている??) はすかしながら、それ以前の分数の計算に勘違いがあるような気もするのですが、このあたりもふまえて 平方根の定理 の解説をお願いできないでしょうか。 よろしくお願いします。

  • 三平方の定理の逆

    三平方の定理は直角三角形の斜辺以外の二辺をa,bとしたとき 残った斜辺cが a^2+b^2=c^2 で求められるという公式ですが 逆の「a^2+b^2=c^2なら直角三角形である」の証明はどうやってやるのでしょう?

  • 三平方の定理

    直角をはさむ2辺の長さがa,b、斜辺の長さがcの直角三角形がある。 この直角三角形の内接円の半径rとしたとき、rはa,b,cを用いて2通りの表し方ができ、この事を利用して三平方の定理(a^)+(b^)=cが成り立つことを証明する問題で 図は高さがa底辺b斜辺ガcです ○(a-r)+(b-r)=c これはどこから表されたのですか?

  • 三平方の定理を使うそうなんですが…

    中3の妹に質問されたんですが答えられませんでした…。 座標平面状上に三点A(-1,3),B(4,-2),C(7,1)がある。 y軸上にBP+CPが最小となるような点Pを取るとき、 BP+CPの長さと点Pの座標を求めよ。 範囲的には三平方の定理を使うようなんですが。 最小となるのがどういうときなのかすら分かりません…。

  • Visual Basic の簡単な問題なのですが、分からないので教えてください><

    私は大学の情報の講義で、Visual Basic を習っているのですがちょっとお聞きしたい問題があるのですが、VBに知識のある方回答お願いしますm(_ _"m)ペコリ [問題]1から10までの2乗和を求めて値を表示する3つのプロシージャex1,ex2,ex3をFor~next構文、While~Wend構文、Do Until~Loop構文をそれぞれ用いて完成させよ。 上記のような問題なのですが、For~Next構文は分かりました! Sub ex1() Dim s,n As Integer s=0   For n = 1 To 10   s = s + n^2   Next n  Msgbox s End sub For~Nextは多分これであってますかね?しかし、While~Wend構文とDo Until~Loop構文でのプログラムが考えましたが分からなかったので、分かる方、回答お願いします。 よろしくお願いします<(_ _)>

  • これは三平方の定理なんでしょうか

    図が書いてあるのですがそれを説明すると 底面の半径2cmで高さが4cmの円錐がある。 底面の円周上に孤AB=孤BC=孤CAとなる3点A,B,C をとったとき次の問に答えなさい。という問題なのですが (1)母線APの長さを求めなさい。 (2)線分APの長さを求めなさい。 これは三平方の定理を使いますか

  • 三平方の定理を使った問題

    直角三角形ABCがあります。 斜辺の長さは2で、それ以外の辺を、 短いほうをx、長いほうをhとします。 さらに以下の条件が与えられていて、ここから 辺hの値を求める問題があります。  x=2h-2 解答では、三平方の定理より、 2^2=x^2+h^2 。 これに x=2h-2 を代入して、h=8/5(8分の5)が正解です。 僕は以下のようなやり方で解こうとしました。  4=x^2+h^2 → 2=x+h  これにx=2h-2を代入を代入。  結果、h=4/3(4分の3)で不正解。 4=x^2+h^2 → 2=x+h とするところに間違いなのでしょうが、 どうしてこれがいけないのか理解できません。 理解できる方がいらっしゃいましたら、ご教示いただければと思います。

  • 三平方の定理の証明

    先生から数学の本を借りたときにこのような記述を見つけました 「三平方の定理の証明は多く有る」とです。 私が知っているのは斜辺の上に正方形があり、下の三角形が4枚、そして真ん中に正方形があるものです。 真ん中正方形の面積=(b-a)^2 ここからとくものです。 他にもいろいろ有ると聞いたのですが、いまいち思いつきません。 知っている方、教えて下さい

  • 2の2乗などの何乗に関すること(三平方の定理含む)

    三平方の定理で a2乗+b2乗=5の2乗という計算式があり、回答みると、この式の解の可能性が、(0,5)(3,4) の2つに絞られるというのがありました。 この解になる理由はわかるのですが、そのほかにこの式は方程式には違いないので、 a+b=5っていう風に、右辺左辺二乗をとることもできるのではないかと考えてしまったんですが、 だめなのでしょうか??ただ私のように考えてしまえば、aとbの解の可能性が(1,4)(2,3)などになってしまったり、上記の(3,4)の可能性がなくなったりするのでやっぱり間違っているのかなとおもうのですが、どなたかわかりやすい回答お願いします!

専門家に質問してみよう