計算プリントを自動生成する その11 整数3つの四則の計算(a+b×c)
はじめに
整数2つの四則の計算と、それを作るうちに生じた課題を前回までにまとめました。
今回は整数3つの四則の計算です。
今回はとりあえず「a+b×c」を実装します。
手順
- 整数を3つ選ぶ
- a+b×cの答えを求める
- 計算式をつくる
手動でやってみる
手順 | 数字 |
---|---|
整数を3つ選ぶ | 3,5,7 |
a+b×cの答えを求める | 38 |
計算式をつくる | 3+5×7=38 |
自動でやってみる
ひながた_Limited
まずは演算子を2つ用意しないといけないので、変数「version」を配列にします。
今回は「a+b×c」に限っているので、関数の語尾に_Limitedをつけます。
Sub ひながた_Limited() '------------------------------ '0. 扱う変数の定義 '------------------------------ Dim N As Integer '問題数を決める変数 Dim NN As Integer '扱う数字の個数 Dim version() As Integer '計算の種類を決める変数 Dim level As Integer '難度を決める変数 Dim i As Integer '繰り返しの制御変数 Dim str As String '計算式の文字列 '------------------------------ '1. 問題数の指定 '------------------------------ N = 10 For i = 1 To N '------------------------------ '2. 問題を指定して式を求める '------------------------------ NN = 3 ReDim version(1, NN - 1) version(1) = 1 version(2) = 3 level = 1 str = Int_Calculation_Limited(NN, version, level) '------------------------------ '3. 出力 '------------------------------ Call Insert_Equation(20, 30 * i, str) Next End Sub
Int_Calculation_Limited
Function Int_Calculation_Limited(NN, version, level) As String '---------------------------------- '扱う変数の定義 '---------------------------------- Dim num() As Integer '指定する数値 Dim ans As String 'strに戻す値 '---------------------------------- 'numの値の決定 '---------------------------------- num() = Int_Calculation_Num_Select_Limited(NN) '---------------------------------- '計算式を文字列にする '---------------------------------- ans = "num1+num2×num3=num4" For i = 1 To NN + 1 ans = Replace(ans, "num" & i, num(i)) Next '---------------------------------- '文字列を戻す '---------------------------------- Int_Calculation_Limited = ans End Function
一番の特徴は、計算式を文字列にする箇所です。
いままで「a+b=c」だった部分を「num1+num2×num3=num4」にしています。
Int_Calculation_Num_Select_Limited
Function Int_Calculation_Num_Select_Limited(NN) As Integer() '-------------------------- '変数の定義 '-------------------------- Dim num() As Integer Dim i As Integer ReDim num(1 To NN + 1) '-------------------------- 'numの決定 '-------------------------- For i = 1 To NN num(i) = Rnd_Num(1, 9) Next num(4) = num(1) + num(2) * num(3) Int_Calculation_Num_Select_Limited = num End Function
今回は限定版なのでとりあえず1ケタの数字を3つランダムに選択することにしました。
まとめ
次回以降にLimitedを外していこうと思っていたのですが
ちょっと思ったより難しそうなので「整数3つの四則の計算」はここでいったん凍結します。
これを進めるには少なくとも
「分数の計算」と「負の数の計算」が必要みたいなので
次回以降はそれらに取り組みます。