第1講 数字の規則的な配置
第2話 互いに素であるばあいn回の操作ですべての数字が網羅できることを証明するプログラム例
を実現するプログラム例
Private Sub CommandButton1_Click()
CommandButton2_Click
Dim m As Integer, n As Integer, h As Integer, i As Integer
Dim y As Integer, x As Integer
m = Cells(1, 2)
n = Cells(2, 2)
h = Cells(3, 2)
For i = 0 To n - 1
y = Int(i / 10)
x = i Mod 10
Cells(5 + y, 2 * x + 1) = ((h - 1 + i * m) Mod n) + 1
If i < n - 1 Then Cells(5 + y, 2 * x + 2) = "→"
Next
End Sub
Private Sub CommandButton2_Click()
Rows("4:2000").Select
Selection.ClearContents
Range("A1").Select
End Sub
参考ダウンロード添付ファイル
この例では、(4,81)なら1から81までのすべての数が網羅されているか、
調べていますが、実際の運用では、
0から80までの数字が網羅されているものを使います。
そして、0から80だと全部入っているのかを目で確認する作業は大変な作業です。
そこで、本当に0から80まで入っているか確認するFunctionプロシージャkensyouを加えて、
入っている場合は1の値を返し、入っていない場合は0の値を返すようにして、
その値を利用して、「すべて網羅されています。」「一部の数字しか入っていません。」
と表示させましょう。
CommandButton1_Clickに配列
Dim a(81) As Integer
を用意して、その配列とnを引数にして、
Functionプロシージャkensyouに渡して下さい。
配列の渡し方は、
If kensyou(a, n) then ・・・
としますし、受け手側は
Function kensyou(a() As Integer, n As Integer)
とします。これで配列が受け取れます。
Functionプロシージャkensyouにも配列
Dim b(81) As Byte
を用意しておいて、この配列を利用して全部網羅されているか調べて下さい。
ノーヒントでは難しいですから、一部だけ示しておきましょう。
Function kensyou(a() As Integer, n As Integer)
Dim b(81) As Byte, i As Integer
For i = 0 To n - 1
b(i) = 0
Next
For i = 0 To 80
・・・
Next
For i = 0 To 80
If ・・・ Then
kensyou = 0
Exit Function
End If
Next
kensyou = 1
End Function
さて、省略されている部分を考えて、
を実現しましょう。
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ