第25講 n進数を10進数に翻訳する
第7話 n進数をm進数に翻訳するソフト

コード例
Dim h(100000000) As Byte
Dim a As Long, p As Long, n As Integer, m As Integer
Private Sub CommandButton1_Click()
  Dim a As Integer
  Cells(7, 6) = ""
  n = Cells(6, 3)
  p = Cells(7, 3)
  m = Cells(8, 3)
  a = f(0)
  Cells(9, 3) = s(g(0, a + 1), m)
End Sub
Function f(x As Integer)
  h(x) = p Mod 10
  If h(x) > n - 1 Then
    Cells(7, 6) = "n進数の入力が禁則に反しています。各位の数字はn-1以下でなければなりません。正しく入力しましょう。"
    f = 1
    Exit Function
  End If
  p = Int(p / 10)
  If Int(p / 10) > 0 Then
    f = f(x + 1)
  Else
    h(x + 1) = p Mod 10
    If h(x + 1) > n - 1 Then
      Cells(7, 6) = "n進数の入力が禁則に反しています。各位の数字はn-1以下でなければなりません。正しく入力しましょう。"
      f = 1
      Exit Function
    End If
    f = x
  End If
End Function
Function g(x As Integer, y As Integer)
  If x + 1 < y Then
    g = g(x + 1, y)
  Else
    g = h(x + 1)
  End If
  g = n * g + h(x)
End Function
Function s(x As Long, n As Integer)
  Dim a As Integer
  a = x Mod m
  x = Int(x / m)
  cn = cn + 1
  If x > 0 Then
    s = 10 * s(x, n) + a
  Else
    s = a
  End If
End Function
Private Sub CommandButton2_Click()
  Range("c8:c20").Select
  Selection.ClearContents
  Cells(7, 6) = ""
  Range("A1").Select
End Sub
実行画面例
6進数

さて、これでこの講は終了とします。
次話では、フィボナッチ数列と黄金比をテーマとします。


第6話へ 第26講第1話へ

004
  


VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る