最近Javascriptを学び始めたものです。
どうしてもわからないのでここに質問させていただきます。
<title>keisan.html</title>
<pre><script type="text/javascript">
<!--
// 変数 i:カウント,n, m:問題,sol:正解,ans:解答, t:正解, f:不正解,
var i, n, m, sol, ans ,t ,f;
// 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)
document.writeln("第" + i + "問:" + n + "+" + m + "=?"+"解答"+ ans +" " + "正解です。");
else
document.writeln("第" + i + "問:" + n + "+" + m + "=?"+"解答"+ ans + " "+ "違います。 "+"正解は"+ sol +"です。")
}
//問題数のカウント
document.writeln("正解した問題数は"+ t +"です。");
document.writeln("不正解だった問題数は"+ f +"です。")
// -->
</script></pre>
ここまで書きました。
最後に正解と不正解の個数を画面に表示するようにしなければなりません。
問題の個数の数える変数(式)がわかりません。
わかる方、ヒントでもいいので教えてください。
No.2ベストアンサー
- 回答日時:
現在お困りの「問題の個数」とは、「問題に対する回答の、正解と不正解のそれぞれの個数」ということでよろしいでしょうか?
以下の回答は↑が前提ですが・・
Javascript内のコメントを見る限り、「問題数のカウント」を行う場所が
10回反復する処理(for文のブロック)の後に出てきますが、
この部分の考え方を変えてはいかがでしょうか?
問題にすべて回答し終わった後で正解・不正解を集計するのではなく、
1つ1つの問題に答えた時点で、正解・不正解の数をカウントしていくと楽だと思います。
ヒント(1)「正解・不正解数のカウントアップ方法」
t = t + 1;
↑のような書き方をご覧になったことはありますか?
この書き方をすると、その変数が持っている値に1だけ追加した数が得られます。
(変な例えですが、日本野鳥の会の人が手に持っているカウンタみたいなものです)
ヒント(2)「if文をブロック化」
for文の始めと終わりを{ }で囲むように、if文も始めと終わりを{ }で囲むことで
複数の処理を書くことができます。
以下のような感じです。
if (ans == sol)
{
// 正解だった場合の処理。
// 処理1:正解した旨をdocument.writeln()で書き出す。
// 処理2:正解の問題数をカウントアップ。
}
else
{
// 不正解だった場合の処理。
// 処理1:不正解の旨をdocument.writeln()で書き出す。
// 処理2:不正解の問題数をカウントアップ。
}
上記2つのヒントを元に少々手を加えれば、変数tとfには自然と
正解数・不正解数が入ると思います。
No.3
- 回答日時:
・ merBleu623様の丁寧な解説にこれ以上追加する必要もないかと思われますが、
初心者にとっては思いがけないところで躓いてしまうことがよくあるものです。
・ 老婆心ながら、少し変更も加えながら修正してみました。
・ 変数の初期化
・ Number()とparseInt()の微妙な違い
・ 回数と途中終了の追加
が加わっています。
以下のコードを参考にしてみてください。
------------------------------------------------------------
<html>
<title>keisan.html</title>
<script type="text/javascript">
<!--
// 変数 i:カウント,n, m:問題,sol:正解,ans:解答, t:正解, f:不正解, mi:未入力
var i, n, m, sol, ans ,t=0 ,f=0;
var t=0 ,f=0, mi=0;;
var ans0;
var count;
count = parseInt(prompt("何問回答しますか ?","10"));
// count回反復
for (i=1; i<=count; i++) {
// 問題作成
n = Math.floor(Math.random() * 10) + 1;
m = Math.floor(Math.random() * 10) + 1;
sol = n + m; // 正解の保存
// 出題
ans0 = prompt("第" + i + "問:" + n + "+" + m + "=?","");
if (ans0 == null) { // キャンセルボタン: 途中終了
break;
} else if (ans0 == "") {
mi++;
document.writeln("第" + i + "問: " + n + "+" + m + "=? "+"解答 未入力です。"+"\t正解は"+ sol +"です。<br />");
continue;
}
ans = parseInt(ans0);
// 判定
if (ans == sol) {
t++;
document.writeln("第" + i + "問: " + n + "+" + m + "=? "+"解答"+ ans +" " + "\t正解です。<br />");
} else {
f++;
document.writeln("第" + i + "問: " + n + "+" + m + "=? "+"解答"+ ans + " "+ "\t違います。"+"正解は"+ sol +"です。<br />");
}
}
//問題数のカウント
if ( count>0 ) {
document.writeln("<hr />正解した 問題数は\t"+ t +"です。<br />");
document.writeln("<hr />不正解の問題数は\t"+ f +"です。<br />")
document.writeln("<hr />未入力の問題数は\t"+ mi +"です。<br />")
document.writeln("<hr />")
}
// -->
</script>
<head></head>
<body>
</body>
</html>
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- その他(教育・科学・学問) 正しいレベル分けするために必要な質問数は? 1 2022/12/07 10:40
- 数学 【 数A 順列 】 問題 6個の数字0,1,2,3,4,5,を使ってできる次 のような整数は何個ある 7 2022/06/19 12:33
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- 数学 【 数I 因数分解 】 問題 x⁴+4x²+16を因数分解せよ。 私の解答 ※写真 答え (x²+2 2 2022/07/15 10:19
- 数学 中2数学 等式の変形について 2x-7y=14 yの文字について解きなさい という問題で 解答はy= 7 2022/03/25 01:22
- 数学 【 数I 2次関数 最大・最小 】 問題:関数y=x²+2x+c (-2≦x≦2)の最大値 が5であ 3 2022/06/19 08:41
- 数学 【 数I 2次方程式 重解 】 問題 2次方程式x²-mx+9=0が重解をもつよう に、定数mの値を 1 2022/07/17 19:43
- 英語 another の使い方、otherなどの使い方がわかりません。 大学に入って英文法を研究している先 3 2022/08/03 21:23
- 工学 電検3種の練習問題において、以下問題の答えが理解できません。答えは(5)となっておりますが、この場合 1 2022/11/09 00:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページに日付を自動更新...
-
来年の今日の曜日・・・?
-
HpのFlashで,ブロック回避の方...
-
静的メソッドとインスタンスメ...
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
同じ型【ハイフンと数字】だけ...
-
関数でy=g(x)のgとは何の略です...
-
ボタンをクリックすると数が増...
-
二次元配列の全要素の全要素を...
-
URLのパラメータを取得しリンク...
-
Excel VBA の ChangeFileAccess
-
idを使わずにonclickで自身の要...
-
getElementByIdを使用したグロ...
-
javascript 変数名の連結をしたい
-
<a>タグのテキストを取得
-
React hooksが値を返して配列変...
-
DOM要素を削除しても、イベント...
-
ジェネレーターの作り方
-
HTML:Tableタグに対し、JavaScr...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
ホームページに日付を自動更新...
-
テキストボックスに入力された...
-
for文のiを使ってリンク先のア...
-
○歳△ヶ月と×日を計算してくれる...
-
引数を渡さずに呼び出し元の変...
-
なぜ、ジャバスクリプトが表示...
-
innerHTMLにて設定した情報を再...
-
前のページに戻るとページトッ...
-
更新でランダムでページ内のテ...
-
今日の月と日付の1週間後や3日...
-
「今日の日付けを画像で表示」...
-
java カレンダーの日付指定で...
-
文字列を点滅させたい
-
HTMLを記述しつつサブ窓(showM...
-
条件分岐(IF文)の簡素化
-
Java Scriptのメソッドについて
-
javascriptとphpの連携で疑問
-
現在の日付から、1ヶ月前にす...
-
この方法を教えてください。
おすすめ情報