- ベストアンサー
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時間以上格闘しても答えが出なく、 ここに投稿してみました。 どなたか、回答よろしくお願いいたします。。
- yumikochan
- お礼率77% (7/9)
- Visual Basic
- 回答数6
- ありがとう数5
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
'#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
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17068)
質問の意味がピタゴラス数(正整数の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等でやってみてください。
お礼
わかりにくい質問ですみませんでした。。。初心者なもので…。質問の意味は、私が意味しているものとは違うと思います。わざわざ回答していただいてありがとうございます。こんな私に対してたくさんの回答をしていただいて、本当に感謝しています。みなさん、本当にありがとうございます♪
- Dipjp
- ベストアンサー率0% (0/1)
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に結果を出力します。 いかがでしょうか。
お礼
見るからに難しそうなプログラミングで少々びっくりしています。。。今、入門の授業をとっているのですが、プログラミングは奥が深いですね・・・。明日、学校で試してみようと思います。ありがとうございます!
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
'こんな感じでどうでしょう '--------------------------------------------------------------- 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
お礼
このような難しいプログラミングはまだやったことがないのですごく興味深いです。明日、学校に行って試してみようと思います。ありがとうございます!
- chibita_papa
- ベストアンサー率60% (127/209)
No1です。 失礼しました。 A<300 B<300 ですので、 For A = 1 To 299 For B = 1 To 299 です。 A=300 or B=300の時は、H>300になりますので関係ないですが
- chibita_papa
- ベストアンサー率60% (127/209)
手元に、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 では?
お礼
回答してくださってありがとうございます。この方法は学校で習った形に近いので自分でも試してみることができると思います。明日、学校に行って試してみます。本当にありがとうございました。
補足
大分時間がたったのにまだまだできない初心者です。。。 すみませんが、この結果をを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ですよね?(おそらくここが間違えている??) はすかしながら、それ以前の分数の計算に勘違いがあるような気もするのですが、このあたりもふまえて 平方根の定理 の解説をお願いできないでしょうか。 よろしくお願いします。
- ベストアンサー
- 数学・算数
- 三平方の定理を使うそうなんですが…
中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構文でのプログラムが考えましたが分からなかったので、分かる方、回答お願いします。 よろしくお願いします<(_ _)>
- ベストアンサー
- Visual Basic
- これは三平方の定理なんでしょうか
図が書いてあるのですがそれを説明すると 底面の半径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 とするところに間違いなのでしょうが、 どうしてこれがいけないのか理解できません。 理解できる方がいらっしゃいましたら、ご教示いただければと思います。
- ベストアンサー
- 数学・算数
- 2の2乗などの何乗に関すること(三平方の定理含む)
三平方の定理で a2乗+b2乗=5の2乗という計算式があり、回答みると、この式の解の可能性が、(0,5)(3,4) の2つに絞られるというのがありました。 この解になる理由はわかるのですが、そのほかにこの式は方程式には違いないので、 a+b=5っていう風に、右辺左辺二乗をとることもできるのではないかと考えてしまったんですが、 だめなのでしょうか??ただ私のように考えてしまえば、aとbの解の可能性が(1,4)(2,3)などになってしまったり、上記の(3,4)の可能性がなくなったりするのでやっぱり間違っているのかなとおもうのですが、どなたかわかりやすい回答お願いします!
- ベストアンサー
- 数学・算数
お礼
では、こちらで試してみます。わざわざありがとうございました!