第28講 n進数演算−−−加法その2
第9話 n進法足し算プログラム解説その8
プログラム主要部分再掲
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
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
によって、
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
3
2
4
5
6
6
2
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
4
0
6
5
0
1
2
3
4
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
4
1
3
0
5
0
2
2
6
となり、最後の1行を迎えたわけです。
If c(max + 1) > 0 Then c(max + 2) = n Else c(max + 1) = n
max = 8 ですから、
c(max + 1) > 0 は c(9) > 0
となり、If文の条件は満たされませんから、否定側のc(max + 1) = n
が実行され、c(9) = n です。すなわち、
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
0
3
2
4
5
6
6
2
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
4
0
6
5
0
1
2
3
4
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
7
4
1
3
0
5
0
2
2
6
終わりの印n=7が刻印されて無事足し算の任務が遂行されたわけです。
もし、今の例が
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
4
0
3
2
4
5
6
6
2
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
0
4
0
6
5
0
1
2
3
4
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
0
0
0
1
1
1
3
0
5
0
2
2
6
と c(9) > 0 を満たすなら、肯定側の c(max + 2) = n
が実行されc(10) = n となり、