ブログ

rss

第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つの数の和を求める問題を作ってみましょう。