
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ランキング
-
Pythonでegrep機能をつかいたい
-
テキストファイルの各行を配列...
-
エクセルVBA コードが同じでも...
-
ExcelをCSV書き出す場合のシー...
-
C言語で特定の行を抽出する方法...
-
FindFirstFileとFindNextFileで...
-
Windows漢字フォルダ名の扱い(...
-
Perlを利用してテキストフ...
-
batファイルでrenameができませ...
-
readdir()で得られるファイル・...
-
JSP URLに表示される拡張子 .jsp
-
【C++/CLI】ファイルオープンに...
-
CGIから外部コマンド実行時の標...
-
perlでファイルの比較
-
C言語でファイル名を取得
-
perl CGIでのhttpヘッダー出力...
-
close()で例外が投げられる理由
-
fgets で値が取得できない
-
構造体とファイル入出力につい...
-
openした後、closeしないでプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ifstream を利用した1行分のテ...
-
***.cgiの中身は第三者から見ら...
-
ファイル名を複数個配列で確保...
-
C++でのテキストファイル読み込...
-
ファイル名に日付を入れてアッ...
-
「パスが見つかりません」とい...
-
VBSの処理について
-
perlで該当する行のみ別ファイ...
-
特定のデータを更新する
-
perl での文章の取得について
-
今、「Python 3.8 32-bit」を使っ...
-
shellのコマンド deffの差分の...
-
perlで先頭の数値をみて昇順に...
-
ファイル読み込みマッチングに...
-
テキストファイルの各行を配列...
-
テキストファイルになにも入っ...
-
一行だけ読込
-
ファイル操作
-
ファイルから検索条件を読み込...
-
perlでCSVをソートする方法につ...
おすすめ情報