算数プログラマーになろう

第7日  分数

投稿日時:2021/10/12(火) 11:38


 今日は分数の問題を作ってみましょう。

 
問題名 (*) 問題7 分数
言語 (*) 日本語
問題文 (*) 次の計算をしましょう。
問題式 (*) $1+$2
解答式 (*) $1+$2=$3


 
@BUNBO_TYPE=
$1; b: 1, 8, 9
$2; b: 1, 8, 9
Rb1(0,0);$1$2
$1+$2=$3;b
生成可能問題数 (*) 10


 制約条件のところだけいつもと違いますね。

 
@BUNBO_TYPE=


 問題を作るときに分母を同じにしたい場合は、最初にこのように書きます。

 
$1; b: 1, 8, 9


変数の宣言ですが、整数は「d」、小数は「f」でしたが、分数は「b」になります。
次の3つの数字ですが、最初は分子の最小値、次が分子の最大値、最後が分母の最大値になります。

 
Rb1(0,0);$1$2


分数の乱数を発生します。最初に「@BUNBO_TYPE=1」と宣言した場合は「Rb1」になります。

 
$1+$2=$3;b


$1$2の和の答え$3を分数で表します。


このままでも問題は作れますが、8/5のような問題が出たり、答えも1/21/22/2のように表示される場合があります。それで次のように$1$2$3も1炉委小さいものを作ることにしましょう、

 
Rb1(0,0);$1$2 :$1<1,$2<1,$1+$2<1


なお、答えを帯分数で表示したい場合は「$1+$2=$3;bt」のようにします。

 
@BUNBO_TYPE=
$1; b: 1, 8, 9
$2; b: 1, 8, 9
Rb1(0,0);$1$2 :$1<1,$2<1,$1+$2>1
$1+$2=$3;bt







 
【本日のまとめ】
@BUNBO_TYPE=・・・分母を同じにしたい場合に最初に書く。
が選ばれる。
$1; b: 1, 8, 9 ・・・分数の変数の宣言。数字は分子の最小値、分子の最大値、分母の最大値の順。
Rb1(0,0);$1$2 ・・・分数の乱数。最初に@BUNBO_TYPE=1と宣言したのでRb1
$1+$2=$3;b・・・$1$2の和の答え$3を分数で表示
$1+$2=$3;bt・・$1$2の和の答え$3を帯分数で表示


時間があったら、次の発展問題を作ってみましょう。

 
(発展1) 分母が9までの同じ分母の真分数のひきざんを作ってみましょう。
(発展2)  1から分母が9までの真分数をひく問題を作ってみましょう。
(発展3)  仮分数を帯分数にする問題を作ってみましょう。




 

​​​​​​第6日  小数

投稿日時:2021/10/11(月) 18:27




 これまでは整数の問題だけでしたが、今日は小数の問題を作ってみましょう。



 
問題名 (*) 問題6 小数
言語 (*) 日本語
問題文 (*) 次の計算をしましょう。
問題式 (*) $1+$2
解答式 (*) $1+$2=$3
制約条件 (*)

 
$1; f1: 01.1, 9.9
$2; f1: 0.1, 9.9
Rf1(0,0);$1$2
$1+$2=$3;f1
生成可能問題数 (*) 10


これまでと制約条件だけが変わっています。整数は「d」でしたが、小数は「f」になります。

 
$1; f1: 0.1, 9.9


小数の場合は、小数点以下の桁数まで指定しますので、小数点以下1桁(1/10 の位 )までの小数の場合は「f1」となります。小数点以下2桁(1/100 の位 )までの小数の場合は「f2」です。
次の「0.1, 9.9 」は整数の場合と同じように最小値、最大値になります。

 
Rf1(0,0);$1$2


乱数の場合もdの代わりにf1などと指定します。
Rf1(0.1,9.9);$1$2 でも同じことになります。

 
$1+$2=$3;f1


最後の答えまで必ずdf1に変えてください。
もし、最後の答えがdのままだったりすると「1.1 + 7.6 = 8 」のように小数点以下が切り捨てられた整数が答えになってしまいます。


なお、与えられた範囲内の乱数ではなくて、決まった小数の中から選びらいという場合は次のようにします。

 
Sf(0,2,0,4,0,6,0.8);$1


このようにすると 0,2,0,4,0,6,0.8のどれかが$1になります。
整数の場合に同じような使い方をしたい場合には、「Sd(2,4,6,8);$1」となります。

 
【本日のまとめ】
$1; f1: 0.1, 9.9 ・・・変数$1は小数点以下1桁までの小数として、最小値は0.1、最大値は9.9とする。
Rf1(0,0);$1$2・・・小数第1位までの乱数を変数$1$2のそれぞれの範囲内で作る。
$1+$2=$3;f1・・・$1$2の和の答え$3を小数第1位までの小数にする。
Sf(0,2,0,4,0,6,0.8);$1・・・0,2,0,4,0,6,0.8のどれかが小数の変数$1に入る。
Sd(2,4,6,8)・・・2,4,6,8のどれかが整数の変数$1に入る。


時間があったら、次の発展問題を作ってみましょう。

 
(発展1) 小数点以下1桁までの小数のひきざんを作ってみましょう。
(発展2) 1桁の整数から小数点以下1桁までの小数をひく問題を作ってみましょう。
(発展3) 小数点以下1桁までの小数に1桁の整数をかける問題を作ってみましょう。
(発展4) 小数点以下1桁までの小数のたしざんで答えが整数になる問題を作ってみましょう。
(発展5) 小数点以下1桁までの小数を1桁の整数でわって、商が小数点以下1桁でわれる問題を作ってみましょう。
(発展6) 1桁の整数を0.2または0.5でわる問題を作ってみましょう。

 




第5日 使う変数をあらかじめ宣言しておく

投稿日時:2021/10/10(日) 17:26




 昨日の最後の発展5は、次のどちらかの考えでできますね。
(1)2桁の$1と1桁の$2を決めて$2-$1が1桁になるようにする。
(2)1桁の$1$2を決めて、$1$2が2桁になるようにする。


どちらにしても、制約条件を次のように書かないといけないので苦手場人も多いでしょう。


(1)Rd(10,18);$1
Rd(1,9);$2:$1-$2<10
(2)Rd(1,9);$1$2:$1+$2>=10


そういう人のために簡単な方法も紹介します・
制約条件を次のように書いてもよいのです。

 
$3; d: 1, 9
Rd(10,18);$1
Rd(1,9);$2
$1-$2=$3;d


最初に$3は1から9までの整数にしたいと宣言しておけばよいのです。
このようにすれば制約条件は簡単になりますね。これまでの問題も、もっと簡単に作れたかもしれません。


ところで、変数は$1$2も使うので、次のように宣言したくなりませんか。


$1; d: 10, 18
$2; d: 1, 9
$3; d: 1, 9
Rd(10,18);$1
Rd(1,9);$2
$1-$2=$3;d


もちろん、それでもよいのですが、最初に使う変数を宣言した場合は、次のように書けばよいのです。

 
$1; d: 10, 18
$2; d: 1, 9
$3; d: 1, 9
Rd(0,0);$1$2
$1-$2=$3;d


コンピュータは$1$2の値の範囲が分かっていますから「Rd(0,0);$1$2」で、それぞれの範囲内で数字を探してくれます。






今日はこれまでの復習もかねてたくさんの発展問題を作ってみましょう。

 
【本日のまとめ】
◎最初に変数の範囲を決めてもよい。
$3; d: 1, 9 ・・・$3は1から9までの整数であることを決めておく。
Rd(0,0);$1$2 ・・・最初に$1$2の範囲を宣言しておけば、その範囲での数字を探してくれる。


次の発展問題を作ってみましょう。問題によっては2通りの考え方をしてみましょう。

 
(発展1) 1桁+1桁で繰り上がりのある問題を作ってみましょう。
(発展2) 2桁-1桁でくり下がりのあるひき算を作ってみましょう。
(発展3) 3桁と2桁の数字を決めて、たし算とひき算の問題の組を作ってみましょう。
(発展4) 3桁÷2桁のわり算で商と余りを求める問題作ってみましょう。
(発展5) 4桁÷2桁のわり算で割り切れる問題を作ってみましょう。
(発展6)  2桁の連続する2つの数の積を求める問題を作ってみましょう。
(発展7) 3桁の連続する3つの数の和を求める問題を作ってみましょう。




 

第4日 わり算

投稿日時:2021/10/10(日) 08:50

第4日目 わり算


 今回は「問題3 かけ算」を手本にして新しい問題を作ってみましょう。

 
問題名 (*) 問題4  わり算
言語 (*) 日本語
問題文 (*) 次の計算をしましょう。
問題式 (*) $3÷$2
解答式 (*) $3÷$2=$1
制約条件 (*)

 
Rd(1,9);$1$2
$1*$2=$3;d
生成可能問題数 (*) 10


問題名、問題式、解答式を変えただけです。制約条件は全く同じです。


コンピュータではかけ算を「*」で表しますが、わり算は「/」を使います。


これまでと同じようにRd(1,9);$1$2 で変数を決めて「$1÷$2」という問題を作ってもよいのですが、問題によっては割りきれない問題が出てしまいます、


そこで、1桁×1桁のかけ算の答えが分かっている$3$2で割ったのです。答えは当然$1ですね。


このように、あらかじめわかっている答えを利用して問題を作ると便利なこともあります。


例えば、2桁ー1桁の問題で、答えが1桁のものだけを作りたい場合にも利用できます。


ところで、いままで同じような変更で問題を作ったらどうなるでしょうか。

 
問題名 (*) 問題4  わり算
言語 (*) 日本語
問題文 (*) 次の計算をしましょう。
問題式 (*) $1÷$2
解答式 (*) $1÷$2=$3
制約条件 (*)

 
Rd(1,9);$1$2
$1/$2=$3;d
生成可能問題数 (*) 10


わり算は「$1/$2=$3」でしたね。


ちゃんと問題が作れていますね、実は小学生にも解ける問題になっているのです。
ただし、問題文と解答式を次のように変える必要があります。
-
問題文 (*) 次のわり算の商を答えなさい。
解答式 (*) $1÷$2 の商は $3


これまで説明してきませんでしたが、制約条件で$3を決めるときに「$1/$2=$3;d」と書いていた最後の「d」は小数点以下を切り捨てて整数だけにするのです。
ですから、商を求める問題になるのです。



 
【本日のまとめ】
答えの利用・・・あらかじめわかっている答えを利用して問題を作ってもよい。
◎わり算の記号・・・問題式、解答式では「÷」を使えるが、制約条件では「/
$1/$2=$3;d・・・最後のdは小数点以下を切り捨てて整数だけの答えにする。選ぶ。


時間があったら、次の発展問題を作ってみましょう。

 
(発展1) 2桁×2桁のかけ算を利用してわり算を作ってみましょう。
(発展2) 2桁÷1桁の問題で答えが1桁の整数になる問題を作ってみましょう。
(発展3) 5桁÷2桁の問題で答えが3桁の整数になる問題を作ってみましょう。
(発展4) 3桁÷2桁の商を求める問題を作ってみましょう。
(発展5) 2桁ー1桁の問題で、答えが1桁のものだけの問題を作ってみましょう。




 

第3日 かけざん

投稿日時:2021/10/09(土) 05:34


第3日目 かけざん


 今回も「問題1 たしざん」を手本にして新しい問題お作って見ましょう。

 
問題名 (*) 問題3  かけざん
言語 (*) 日本語
問題文 (*) 次の計算をしましょう。
問題式 (*) $1×$2
解答式 (*) $1×$2=$3
制約条件 (*)

 
Rd(1,9);$1$2
$1*$2=$3;d
生成可能問題数 (*) 10


ひきざんの時と同じように問題文と3箇所の「+}を変えました。またRd(1,9);$1$2にしました。でも、少し違っているところがあるのですがわかりますか。


最初の2箇所は「×」に変わっていますが最後の制約条件では「*」になっています。


これは、コンピュータではかけざんを「*」で表すからです。×だと文字のエックスと間違えるからでしょうか。


たしざん、ひきざんと同様に、複雑なかけざんの問題も作れますね。後の発展問題で作って見てください。


これまでの問題式は1行だけでしたが、何行でも問題式に書けます。



 
問題式 (*) $1×
$2×7


変数だけでなく、決まった数字の7なども妻得るのです。


このように問題式を変えた解答式や 制約条件も変える必要がありますね。



 
解答式 (*) $1×7=$3
$2×7=$4

 
制約条件 (*)

 
Rd(1,9);$1$2
$1*7=$3;d
$2*7=$4;d




この変更でも良いのですが、$1$2が同じ場合もありますので、次のようにしたほうがよいでしょう。


Rd(1,9);$1$2:$1!=$2
等しくないという条件は「!=」と書くのでしたね、思い出しましたか。


また、問題式を次のように書いてかけさん九九の練習もできます。
MathPubでは、工夫するといろいろな問題が作れるのです。

 
問題式 (*) $1×$2
$1×($2+1)
$1×($2+2)




今度は問題式を次のように変えてみてください。

 
問題式 (*) $1×□$3


$3はかけざんの答えのために用意した変数ですが、このように問題式に使ってもよいのです。


 なお、少し複雑になりますが、次のような問題も簡単に作ることができるのです。



 
問題式 (*) $1×□$3×$4
解答式 (*) $1×$2=$3×$4
制約条件 (*)

 
Rd(1,9);$1$2$3$4:$1*$2==$3*$4,$3!=$1,$3!=$2


×3=3×2 は同じ答えになることはすぐにわかりますが、3×8=4×6 のような同じ答えになる問題もコンピュータが見つけてくれるのです。


制約条件で等しい時は「==」、等しくない時は「!=」だったですね。
$1*$2==$3*$4 で同じ答えのものを探していますが、$3$1に等しくなく($3!=$1)、$2にも等しくない($3!=$2)ものを選んでいます。



 
【本日のまとめ】
かけざんの記号・・・問題式、回答式では「×」を使えるが、制約条件では「*
問題式・・・1行だけでなく何行でもかける。7などの決まった数字も使える。
問題式とmonndaishikito
1,5);$1$2:$1>$2・・・$1$2より大きいものだけが選ばれる。
Rd(1,5);$1$2$3:$1>$2,$2>$3・・・$1,$2,$3の順に大きいものだけが選ばれる。
$1$2の条件は次のように書きます。
$1==$2・・・$1は$2と等しい
$1!=$2・・・$1は$2に等しくない
$1>$2・・・$1は$2より大きい
$1>=$2・・・$1は$2以上(大きいか等しい)
$1<$2・・・$1は$2より小さい
$1<=$2・・・$1は$2以下(小さいか等しい)


時間があったら、次の発展問題を作ってみましょう。
作成する問題の数は限られていますので、発展問題は問題2の制約条件を変えるだけで同じ問題番号で保存してください。

 
(発展1) 2桁×2桁のかけ算を作ってみましょう。
(発展2) 3×2桁のかけ算を作ってみましょう。
(発展3) 3×2桁のかけ算で答えが5桁になるものを作ってみましょう。
(発展4) 2桁×2桁で同じ答えになる問題を作ってみましょう。
(発展5) 6 ×□ = 5 × 54のような1×2桁で同じ答えになる問題を作ってみましょう。