計算プリントを自動生成する その9 整数の四則の計算
はじめに
その7からしばらく新たな関数を作っていません。
今回もやはり新しい関数は書きません。
そろそろ書きたいですね笑
Int_AddSubとInt_MulDiv
この二つの関数はほとんど機能が似ています。
- 数値を下位の関数で決めてくる
- 場合によっては数値を入れ替える
- 計算式の文字列を作成する
この中に「足し算ならではのこと」や「割り算で起こりうる例外」は含まれません。
そういった専門的なところは「~~_Num_Select」関数で処理しているためです。
これらはちょっとしたベルトコンベアというか。
ようは流すだけの関数です。
なのでこの2つは統合してしまいましょう。
Int_Calculation
「Int_AddSub」や「Int_MulDiv」の作り方と一緒です。
Function Int_Calculation(version, level) As String '---------------------------------- '整数の計算式を生成する 'version=1は足し算 'version=2は引き算 'version=3は掛け算 'version=4は割り算 '---------------------------------- '---------------------------------- '扱う変数の定義 '---------------------------------- Dim num() As Integer '指定する数値 Dim ans As String 'strに戻す値 Dim tmp As Integer 'numを入れ替えるための変数 '---------------------------------- 'numの値の決定 '---------------------------------- Select Case version Case Is = 1, 2 num() = Int_AddSub_Num_Select(level) Case Is = 3, 4 num() = Int_MulDiv_Num_Select(level) End Select '---------------------------------- '引き算、割り算用の処理 '---------------------------------- Select Case version Case Is = 1, 3 Case Is = 2, 4 tmp = num(1) num(1) = num(3) num(3) = tmp End Select '---------------------------------- '計算式を文字列にする '---------------------------------- Select Case version Case Is = 1 ans = "a+b=c" Case Is = 2 ans = "a-b=c" Case Is = 3 ans = "a×b=c" Case Is = 4 ans = "a÷b=c" End Select ans = Replace(ans, "a", num(1)) ans = Replace(ans, "b", num(2)) ans = Replace(ans, "c", num(3)) '---------------------------------- '文字列を戻す '---------------------------------- Int_Calculation = ans End Function
ちょちょっと条件分岐を足すだけです。
まとめ
これで整数の四則の計算はクリアです。
たとえばversion-Rnd_Num(1,4)とすると
四則の計算がランダムに表れるプリントが作れます。
今回分かったことは。
うまいこと表の面を作ってあげれば、それに対応する裏の面は簡単に引き出せるということ。
骨格の部分は想像以上に使いまわしができるということ。
次回は先に進む前に「今回は保留です」と言っていた箇所をまとめておきましょう。
それらをその場では解決しませんが、どうやったら解決できそうかくらいは考えます。
一段落ついたのでちょっと息抜きの回です。