第5講 問題における数字の配置をいかにするか?
第3話 均等配置の実践

001
を実現するプログラム例

Dim w As Byte, iz(80) As Byte, jz(80) As Byte 'wははじめる位置、iz(80)とjz(80)はそれぞれy座標とx座標
Private Sub CommandButton1_Click()
  CommandButton2_Click
  w = 11
  hitaisyou '非対称に配置する場合の座標作りと表示
End Sub
Sub hitaisyou() '非対称に配置する場合の座標作りと表示
  Dim i As Byte, a As Byte 'aはセル(箱)番号を表す変数
  For i = 0 To 23
    a = (w + 7 * i) Mod 81
    iz(i) = Int(a / 9)
    jz(i) = a Mod 9
    Cells(4 + iz(i), 2 + jz(i)) = "*"
  Next
End Sub
Private Sub CommandButton2_Click()
  Rows("3:200").Select
  Selection.ClearContents
  Cells(2, 1).Select
End Sub
参考ダウンロード添付ファイル


さらに改良して配置を次の条件下でⅠⅡの2つを実現してください。

 ①はじめる位置
 ②飛び
 ③ヒント数もシートから取得する
  のいずれもシートから取得する
  

  *シートに入力した数字が81と互いに素でないときは、
  飛びに指定されている数字は81と互いに素ではありませんと表示してプログラムを実行しない
  

 ①はじめる位置は0以上80以下のランダムな数字とする
 ②飛びはシートから取得する
 ③ヒント数もシートから取得する
 はじめる位置はシートに表示する
 *シートに入力した数字が81と互いに素でないときは、
  飛びに指定されている数字は81と互いに素ではありませんと表示してプログラムを実行しない
Byteだとオーバーフローする場合にはIntegerに変更してください。
後でByte型に戻すことを考えます。

第2話へ 第4話へ


トップへ