みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM10です。よろしくお願いします。
小学1年生の子供に、(1〜10)の足し算引き算の勉強をさせるため
以下のファイルを作成中です。
Leftフィールド = Int (Random*10) + 1
演算子フィールド = Choose (Int (Random * 2 ) ; "+" ; "-" )
Rightフィールド = Int (Random*10) + 1
計算フィールド = If (演算子 = " + " ; Left + Right ; Left - Right )
上記のままですと、引き算の時にRightフィールドがLeftフィールドより
数値が大きいときにマイナスの答が発生します。
さすがに小1でマイナス計算はしないので、
演算子が "-"のとき、RightはLeftより数値を小さくするよう
Random関数の範囲指定できるのでしょうか。
If ( 演算子 = "-" ; Left > Int ( Random * 10 ) + 1; Int ( Random * 10 ) + 1 )
なんて試してみましたがまったく無駄でした。
Offline
引き算の時だけ、Max()とMin()関数を使えば良いでしょう。
Offline
例えば「1-1=0」など演算結果が負数にならない式をランダムに自動生成する式は、
Let([
#left=Int(Random*10+1);
#operator=Choose(Int(Random*2);"+";"-");
#right=Case(#operator="-";Int(Random*(#left-1)+1);Int(Random*10+1));
#fnc=#left&#operator&#right
];
#fnc & "=" & Evaluate(#fnc)
)
Offline
範囲指定してだと引き算の時に大きい数が出にくくなるので、
2つ発生して大きい方をLeftに使う方がよさそうです。(Shinさんの)
数1フィールド = Int (Random*10) + 1
演算子フィールド = Choose (Int (Random * 2 ) ; "+" ; "-" )
数2フィールド = Int (Random*10) + 1
問題フィールド = Case ( 演算子 = "+" ; 数1 ; Max ( 数1 ; 数2 ) ) & 演算子 & Case ( 演算子 = "+" ; 数2 ; Min ( 数1 ; 数2 ) )
答えフィールド = Evaluate ( 問題 )
Offline
Shin様 Hiro様 wader様 ご回答ありがとうございました。
やりたいことができました。
ごれで夏休みにクイズ&ゲーム感覚で足し算引き算の勉強
をやらせれます。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 509.27 KiB (Peak: 516.15 KiB) ]