王道の FizzBuzz
Sub Initialize Dim inputNum As String Dim outputNum As String Dim wNum As Variant Dim num As Integer Dim i As Integer Dim z As Integer inputNum = "" outputNum = "" z = 0 entry: inputNum = InputBox$("数字入力", "FizzBuzz") If IsNumeric(inputNum) = False Then GoTo msg ElseIf inputNum <= 0 Then GoTo msg End If num = CInt(inputNum) '1は最初で入れとく outputNum = "1" + Chr(10) + Chr(13) For i = 2 To num wNum = "" If i Mod 3 = 0 Then wNum = "Fizz" End If If i Mod 5 = 0 Then wNum = wNum + "Buzz" End If If wNum = "" Then wNum = i End If outputNum = outputNum + wNum + Chr(10) + Chr(13) Next MsgBox outputNum Exit Sub msg: MsgBox "整数いれて!" z = z + 1 If z = 3 Then MsgBox "exit!" Exit Sub GoTo entry End If End Sub
こんなもんでしょうか。
(ちょっとカンニングしましたが)
ゼロ以上の数値が入力されているかのチェックを入れて、それ以外のものが3回入力されたら処理終了するようにしました。
九九を出力するプログラム
使用言語:lotusscript
Sub Initialize Dim i As Integer 'かけられる数 Dim j As Integer 'かける数 Dim r As Integer 'こたえ Dim msg As String '出力 msg = "" For i = 1 To 9 For j = 1 To 9 r = i * j If r < 10 Then msg = msg + " " + CStr(r) + " " Else msg = msg + CStr(r) + " " End If Next If i < 9 Then msg = msg + Chr(10) + Chr(13) End If Next MsgBox msg End Sub
出力結果の縦をそろえられなかったのが気に入らないけど。
素数を出力するプログラム
おもしろそうだったのでつくってみた^^
言語は lotusscript 。
Sub Initialize Dim entry_num As String '入力された数字(変換前) Dim num As Integer '入力された数字(変換後) Dim i As Integer 'カウント用 Dim j As Integer 'カウント用 Dim p As Integer '配列要素数 Dim aliquot As Integer '約数の数 Dim aliquot_num As String '約数 entry_num = InputBox$("数字入力", "Prime number") If entry_num = "" Then Print "数字入力して!" Else num = CInt(entry_num) aliquot_num = "" For i = 1 To num aliquot = 0 For j = 1 To i If i Mod j = 0 Then aliquot = aliquot + 1 End If Next If aliquot = 2 Then If aliquot_num <> "" Then aliquot_num = aliquot_num + " , " End If aliquot_num = aliquot_num + CStr(i) End If Next '出力 MsgBox "入力した数字の範囲内にある素数は…" + Chr(10) + Chr(13) + aliquot_num End If End Sub
10000 を入力したら、画面に入りきらないくらい出てきて吹き出しそうになったw
ちなみに処理時間は15秒ほど。
計算方法とかところどころ調べてしまったのが悔しい。。
しかも 1 も素数だと勘違いしてたorz
てか、ブログ書くのいつぶりよ^^#
久しぶりに楽しかったです^^