
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時間以上格闘しても答えが出なく、
ここに投稿してみました。
どなたか、回答よろしくお願いいたします。。
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
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等でやってみてください。
わかりにくい質問ですみませんでした。。。初心者なもので…。質問の意味は、私が意味しているものとは違うと思います。わざわざ回答していただいてありがとうございます。こんな私に対してたくさんの回答をしていただいて、本当に感謝しています。みなさん、本当にありがとうございます♪
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に結果を出力します。
いかがでしょうか。
見るからに難しそうなプログラミングで少々びっくりしています。。。今、入門の授業をとっているのですが、プログラミングは奥が深いですね・・・。明日、学校で試してみようと思います。ありがとうございます!
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
このような難しいプログラミングはまだやったことがないのですごく興味深いです。明日、学校に行って試してみようと思います。ありがとうございます!
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
では?
この回答への補足
大分時間がたったのにまだまだできない初心者です。。。 すみませんが、この結果ををListBoxに表示したい場合はどうすればいいのか教えていただけませんか?お手数をおかけします。よろしくお願いします!!
補足日時:2006/05/07 15:05回答してくださってありがとうございます。この方法は学校で習った形に近いので自分でも試してみることができると思います。明日、学校に行って試してみます。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) For~Nextステートメントの終了条件について 1 2023/01/08 18:36
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Basicを使って三平方の...
-
C++でのテキストファイル読み込...
-
perlでcsvファイルを読む(ダブ...
-
openした後、closeしないでプロ...
-
VBAでCSVファイルを途中行まで...
-
バッチファイルの作り方(CSV→...
-
dos変数の%~dp0は powershellで...
-
パスワードを外部ファイルから...
-
batファイルでrenameができませ...
-
コンソール出力をテキストに出...
-
エクセルVBA コードが同じでも...
-
掲示板を作るにあたり、ロック...
-
Net::FTPを使いファイル一覧の...
-
jpgファイルの頭の部分を読みと...
-
コマンドプロンプトからperlを...
-
Perlのmyとourについて
-
python renameについて
-
C言語で特定の行を抽出する方法...
-
複数ファイルを1つにするシェ...
-
オープンしたファイルで行の連結
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++でのテキストファイル読み込...
-
ファイル名を複数個配列で確保...
-
「パスが見つかりません」とい...
-
Pythonでegrep機能をつかいたい
-
Fortranで1行飛ばして読み込む方法
-
Perl エラーログを指定の場所...
-
Pythonでテキストを行数指定し...
-
テキストファイルの各行を配列...
-
Ruby ファイル出力について
-
一行だけ読込
-
連番のファイルを何個も開きたい
-
ifstream/ofstream について
-
ifstream を利用した1行分のテ...
-
入出力共用が出来ないんです
-
同じようなソースなのですが片...
-
shellのコマンド deffの差分の...
-
ファイルから検索条件を読み込...
-
Pythonで非日本語のUnicode文字...
-
perlでCSVをソートする方法につ...
-
VBA Functionプロシージャで複...
おすすめ情報