第28講 n進数演算−−−加法その2
第1話 n進法足し算マクロ解答例
を実行するプログラム例
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話へ
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++ 入門 基礎から応用まで
本サイトトップへ