Option Strict On
Imports System.Collections.Generic
Public Class Form1
#If 0 Then
【問題】
1から100までの数を表示するプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「Dozz」とプリントすること。
#End If
Const Fizz As String = "Fizz"
Const Factor_Fizz As Integer = 3
Const Buzz As String = "Buzz"
Const Factor_Buzz As Integer = 5
Const Dozz As String = "Dozz"
Const Factor_Dozz As Integer = Factor_Fizz * Factor_Buzz
Const Range_F As Integer = 1
Const Range_T As Integer = 100
'************
Private Class factor_vs_string
Private _i As Integer = Nothing
Private _str As String = Nothing
'*
Public ReadOnly Property I() As Integer
Get
Return _i
End Get
End Property
'*
Public ReadOnly Property STR() As String
Get
Return _str
End Get
End Property
'*
Public Sub New(ByVal i As Integer, ByVal str As String)
_i = i
_str = str
End Sub
End Class
'************
Private 判定 As List(Of factor_vs_string) '判定順の維持
'************
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
判定 = New List(Of factor_vs_string)
判定.Add(New factor_vs_string(Factor_Dozz, Dozz))
判定.Add(New factor_vs_string(Factor_Fizz, Fizz))
判定.Add(New factor_vs_string(Factor_Buzz, Buzz))
For i As Integer = Range_F To Range_T
Console.Write(ans(i) + ",")
Next
End Sub
Private Function ans(ByVal i As Integer) As String
For Each fs As factor_vs_string In 判定
If i Mod fs.I = 0 Then Return fs.STR
Next
Return i.ToString
End Function
End Class