第28講 n進数演算−−−加法その2
第1話 n進法足し算マクロ解答例
s
を実行するプログラム例
Dim n As Integer
Private Sub CommandButton1_Click()
  Dim a(14) As Integer
  Dim b(14) As Integer
  Dim c(14) As Integer
  n = Cells(2, 16)
  Rows("3:20000").Select
  Selection.ClearContents
  Cells(2, 1).Select
  Call sy(a())
  Call sy(b())
  Call ds(a())
  Call ds(b())
  Call hy(a(), 3)
  Call hy(b(), 4)
  Call sy(c())
  Call ts(a(), b(), c())
  Call hy(c(), 5)
End Sub
Sub sy(a() As Integer)
  Dim i As Integer
  For i = 0 To 14
    a(i) = 0
  Next
End Sub
Sub ds(a() As Integer)
  Dim i, m As Integer
  m = Int(10 * Rnd)
  For i = 0 To m
    a(i) = Int(n * Rnd)
    If i = m Then
      If a(i) = 0 Then i = i - 1
    End If
  Next
  a(m + 1) = n
End Sub
Sub hy(a() As Integer, g As Integer)
  Dim i As Integer
  For i = 0 To 14
    If a(i) = n Then Exit For
    Cells(g, 14 - i) = a(i)
  Next
End Sub
Sub ts(a() As Integer, b() As Integer, c() As Integer)
  Dim i As Integer, j As Integer
  Dim d(14) As Integer, e(14) As Integer
  Call sy(d())
  Call sy(e())
  Dim asz As Integer, bsz As Integer
  asz = cp(d(), a()) '終わり記号nをなくし、サイズを取得
  bsz = cp(e(), b()) '終わり記号nをなくし、サイズを取得
  Dim max As Integer
  max = asz
  If bsz > max Then max = bsz
  For i = 0 To max
    c(i) = c(i) + d(i) + e(i)
    c(i + 1) = c(i + 1) + Int(c(i) / n)
    c(i) = c(i) Mod n
  Next
  If c(max + 1) > 0 Then c(max + 2) = n Else c(max + 1) = n
End Sub
Function cp(x() As Integer, y() As Integer)
  Dim i As Integer
  For i = 0 To 14
    If y(i) = n Then
      cp = i - 1
      Exit Function
    End If
    x(i) = y(i)
  Next
End Function
Private Sub CommandButton2_Click()
  Rows("3:20000").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
参考ダウンロード添付ファイル

前回までの説明があっても難解ですよね。
次話で詳しく解説します。



第27講第8話へ 第2話へ

004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
Visual C++ によるC言語 入門 C++ 入門 基礎から応用まで
本サイトトップへ