• 締切済み

javascriptのプログラミングについて

課題が出たのですが全然わからなくて・・・ ベースは作成しているので ポイントだけでも教えていただけたら幸いです。 (1)alert(…) ではなく, document.writeln(…) を用いて, 最終的に以下のような画面を得るようにする. 第1問 3+4=? 解答 7 正解です 第2問 2+10=? 解答 20 違います 正解は 12 です 10回反復だとfor (i=1; i<=10; i++)みたいにしますが反復の回数が決まってないときってどうすればいいんですか? (2)…上に加え,更に,最後に正解と不正解の個数を画面に表示するようにする. 正解をt、不正解をfの変数を使って数えるようにしようと思うのですが どうすればいいですか? (3)上2項とは別に,解答が正解だったときは何もせず,不正解だったときには,その旨表示して,正解するまで同じ問題を繰り返すようにする. (4)足し算ではなく,引き算の練習プログラムにする.その際,正解が正の数になるように問題を作成すること. sol = n - m>0; // 正解の保存 こんな単純なはずないですよね。。。 (5)足し算,引き算がランダムに混在するような練習プログラムにする. 引き算の場合は,やはり正解が正の数になるようにすること. ランダムって!?って感じなんです。 誰か教えてください!!

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

課題ということなので、正解は書かないほうがよいですね? どうしてもつまったらまた質問ください まずは(1)は原文があるのでざっくり訂正します <script type="text/javascript"> // 変数 i:カウント,n, m:問題,sol:正解,ans:解答,que:質問文; var i, n, m, sol, ans, que ; for (i=1; i<=10; i++) { n = Math.floor(Math.random() * 10) + 1; m = Math.floor(Math.random() * 10) + 1; sol = n + m; que="第" + i + "問:" + n + "+" + m + "=?" ans = prompt(que); document.write(que+" 解答 "+ans) if (parseInt(ans) == sol) { document.writeln("正解です<br />"); }else { document.write(" 違います 正解は"+sol+"です<br />"); } } </script> (2)のヒント t=0;f=0;if(正解){t++;}else{f++;} ですね。 (3)はアプローチがことなりますね この場合無限ループ処理になりますので正解がわからないとき やめられなくなるという危険があります。 フローとしてはこんな感じ <script> var x,y; x=1 while(x!=y){ y=prompt("1と入力する") } alert("おわり") </script> (4)は意外にめんどうですが nとmをつくって、mはnと値が変わるまでループしてランダムで値をえる nがmより大きい場合はいれかえるというフローでどうでしょ? (5)それまでの複合です 足し算か引き算かはランダムで1/2の確率になるようにすればいいでしょう

jewel1007
質問者

お礼

丁寧なご説明ありがとうございます。 (3)の「無限ループ処理になりますので正解がわからないとき やめられなくなるという危険があります。」 ということなんですが、ならばbreakを用いますか?? 反復処理の途中で,強制的に処理を中断して反復を抜け出したい場合がある.そのような場合,JavaScript では break ステートメントを用いる. と習ったのですがこの問題には適さないのでしょうか・・・??

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

入出力はテキストボックスをつかうとよいでしょう 問題の生成はどうするのでしょうか? 数がきまっていないような書き方ですが、無限にやりつづけることも ないでしょうから、どうやって出題数をきめるのでしょう。 仕様の設計ができていないのでそのあたりから始めてみるとよろしいかと

jewel1007
質問者

補足

一応習ったベースはこんな感じなんですよ・・ これは1~10 の自然数の足し算の問題を出題して,入力された解答をチェックするプログラムを作成し問題は10問出題するものとする. というプログラムです。 <!--"計算練習プログラム " --> <title>JavaScript </title> <pre><script type="text/javascript"> <!-- // 変数 i:カウント,n, m:問題,sol:正解,ans:解答 var i, n, m, sol, ans; // 10回反復 for (i=1; i<=10; i++) { // 問題作成 n = Math.floor(Math.random() * 10) + 1; m = Math.floor(Math.random() * 10) + 1; sol = n + m; // 正解の保存 // 出題 ans = Number(prompt("第" + i + "問:" + n + "+" + m + "=?")); // 判定 if (ans == sol) { alert("正解です"); } else { alert("違います"); } } // --> </script></pre>

関連するQ&A