計算プリントを自動生成する その5 九九の掛け算
はじめに
今までは足し算を扱ってきました。
そのコードをちょっと変えるだけで掛け算にできます。
手順
- 1桁の数字を2つ決める
- 2つの数字を掛け合わせる
- 計算式をつくる
自動でやってみる
「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導入前とほぼ一緒。
まとめ
足し算をすでに扱ったおかげで今回はかなり楽に作れました。
つぎは掛け算の難度を設定します。
今回と次回は息抜きの回ですね。