滝の音

滝の音

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

文章問題を自動生成する その1_3 りんごの値段は?(文章の入出力)

はじめに

いままではコード内やイミディエイトウィンドウで文章を管理していました。
それだと「文章の切り替え」に弱いので、今回は文章の管理について書きます。

文章の管理

コード内でないところで文章を管理する。
ぱっと思いつくのはExcelのシートですが、今回はメモ帳で管理することにします。 シートで管理しようとするとごちゃごちゃになりそうな気がするので。
ここはおそらく趣味の問題だと思います。

コード

文章題生成_3

まだ「ひながた」がないので、最初に書いた「文章題生成_1」をちょっとずつ更新しています。

Sub 文章題生成_3()
'--------------------------
'文章第の一部を書き換える
'--------------------------

'--------------------------
'変数の定義
'--------------------------
 Dim str() As String        '文章
 Dim path As String         'メモ帳のアドレス
 Dim box As Variant         'ワードの候補
 Dim wor(1) As String       'ワード入れ替え用の変数
 Dim num(1 To 3) As Integer '数値入れ替え用の変数
 Dim trgt As String         '数値入れ替え用の変数
 Dim i As Integer           '繰り返しの制御変数
 Dim j As Integer           '繰り返しの制御変数
 
'--------------------------
'文章の読み込み
'--------------------------
 path = ThisWorkbook.path & "\text\text1.txt"
 str = txt_input(path)

'--------------------------
'書き換えの用意
'--------------------------
 box = Array("りんご", "みかん", "なし", "もも", "かき")
 tmp = Rnd_Num(0, UBound(box))
 wor(1) = box(tmp)
 
 num(1) = Rnd_Num(1, 5) * 10 + 100
 num(2) = Rnd_Num(3, 7)
 num(3) = num(1) * num(2)
 
'--------------------------
'問題文を変更
'--------------------------
 For i = LBound(str) To UBound(str)
        trgt = "wor" & 1
        str(i) = Replace(str(i), trgt, wor(1))
        str(i) = Replace(str(i), trgt, wor(1))
    For j = 1 To 3
        trgt = "num" & j
        str(i) = Replace(str(i), trgt, num(j))
        str(i) = Replace(str(i), trgt, num(j))
    Next
 Next
 
 
'--------------------------
'文章の書き出し
'--------------------------
 For i = LBound(str) To UBound(str)
    Call Insert_Equation(20, 30 * (i + 1), str(i))
 Next
 
 path = ThisWorkbook.path & "\text\text2.txt"
 Call txt_output(str, path)
End Sub

変更点をつらつらと。
文章の入力をメモ帳からするようにした。
文章の「ワード」と「数値」を変更する仕様にした。
変更した文章をシート上に出力するようにした。
変更した文章をメモ帳に保管するようにした。

生成した文章

'--------------------------
'問題文
'--------------------------
りんごが1個140円で売られています。
りんごを7つ買う時の値段はいくらでしょう。

'--------------------------
'解き方
'--------------------------
7×140=980
よって980円

まとめ

これで文章の管理が楽になりました。

次回は扱う文章を変えてみます。
知らず知らずのうちに「この文章専用のコード」になってしまっているので
新しい問題を扱うことでその枷を外しましょう。