滝の音

滝の音

名こそ流れてなお聞こえけれ

計算プリントを自動生成する その5 九九の掛け算

はじめに

今までは足し算を扱ってきました。
そのコードをちょっと変えるだけで掛け算にできます。

手順

  1. 1桁の数字を2つ決める
  2. 2つの数字を掛け合わせる
  3. 計算式をつくる

自動でやってみる

「Int_Multiplication」関数を作ります。
前回までにつくった「Int_Addition」に倣って、のちのち必要になりそうな機能も加えておきます。

Int_Multiplication

Function Int_Multiplication(level) As String
'----------------------------------
'1ケタの二つの数を定義する
'それらの和を求める
'計算式を文字列にして戻す
'----------------------------------

'----------------------------------
'扱う変数の定義
'----------------------------------
 Dim num() As Integer    '指定する数値
 Dim ans As String      'strに戻す値

'----------------------------------
'numの値の決定
'----------------------------------
 num() = Int_Multiplication_Num_Select(level)
 
'---------------------
'配分の傾斜
'---------------------
 If num(1) = 1 Or num(2) = 1 Then
    num() = Int_Multiplication_Num_Select(level)
 End If
'----------------------------------
'計算式を文字列にする
'----------------------------------
 ans = "a×b=c"
 ans = Replace(ans, "a", num(1))
 ans = Replace(ans, "b", num(2))
 ans = Replace(ans, "c", num(3))
 
'----------------------------------
'文字列を戻す
'----------------------------------
 Int_Multiplication = ans
End Function

ひとつ特徴が配分の傾斜のところ。
これを入れないと選択された数字の約20%が1になってしまいます。
掛け算ではあまり1は出てほしくないのですよね。
この傾斜によって1の出る確率は(たぶん)4%にまで下がっています。

Int_Multiplication_Num_Select

Function Int_Multiplication_Num_Select(level) As Integer()
'-------------------
'変数の定義
'-------------------
 Dim num() As Integer   '計算式に入れる数値
 Dim N() As Integer     'num1を作るための変数
 Dim M() As Integer     'num2を作るための変数
 Dim i As Integer       '繰り返しの制御変数
'-------------------
'numの数を決定
'-------------------
 ReDim num(1 To 3)
 
'---------------------
'numの値の決定
'---------------------

 num(1) = Rnd_Num(1, 9)
 num(2) = Rnd_Num(1, 9)
 
 num(3) = num(1) * num(2)
 
 Int_Multiplication_Num_Select = num
 
End Function

こちらはInt_Addition_Num_SelectのN,M導入前とほぼ一緒。

まとめ

足し算をすでに扱ったおかげで今回はかなり楽に作れました。
つぎは掛け算の難度を設定します。
今回と次回は息抜きの回ですね。