みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Java Scriptで・・・

<form name="f">
<table border>
<tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr>

<script type="text/javascript">
<!--
// 変数・関数の定義
var i, n1, n2; var s = new Array(11); // 正解を保存する配列 s[0] ~ s[10]

function myrandom(n) {
return Math.floor(Math.random() * n);
}

function check() {
var i, ok=0, ng=0;
for (i=1; i<=10; i++) {
if (document.f.elements["s" + i].value == s[i]) {
document.f.elements["c" + i].value = "○";
ok++;
} else {
document.f.elements["c" + i].value = "×";
ng++;
}
}
document.f.ok.value = ok;
document.f.ng.value = ng;
}

for(i=1; i<=10; i++){

n1 = myrandom(10) + 1;
n2 = myrandom(10) + 1;
s[i] = n1 + n2;

document.writeln('<tr>');
document.writeln('<td>' + i + '</td>');
document.writeln('<td>' + n1 + ' + ' + n2 + ' =</td>');
document.writeln('<td><input type="text" name="s' + i + '"
size="3"></td>');
document.writeln('<td><input type="text" name="c' + i + '"
size="3"></td>');
document.writeln('</tr>');
}
// -->
</script>

</table>
<input type="button" value="答え合わせ" onclick="check();">
正答数:<input type="text" name="ok" size="3">
誤答数:<input type="text" name="ng" size="3">
</form>

このようなプログラムを作ったのですが、この表示される10問が全部異なる問題となるようにするにはどうすればいいでしょうか?

投稿日時 - 2005-07-03 14:38:11

QNo.1488899

すぐに回答ほしいです

質問者が選んだベストアンサー

問題の出題自体が動的な作成なので、
毎回問題自体を保持して、
既に作った問題と同じだったら再作成とするしかないでしょう。

これが選択式の出題なら選択対象の領域から選ぶ度に削除して対象を詰めていけば良いのですが・・・。

var s1= new Array(11);
var s2= new Array(11);

var j;

for(j=1; j<i; j++){
if(s1[j]==n1) if(s2[j]==n2){
n1 = myrandom(10) + 1;
n2 = myrandom(10) + 1;
j=0;
}
};
s1[i]= n1;
s2[i]= n2;

上記を適切に追記すれば、それなりに期待する動作はすると思います。
尚、出来れば考え方を保持しつつ処理を整理される事をお勧めします。
簡単な動作確認はしましたが、
詳細な例外テスト等は一切していませんので
あくまで参考までに。

投稿日時 - 2005-07-04 00:58:46

お礼

ありがとうございました(^^)
参考にさせてもらいます。

投稿日時 - 2005-07-04 15:02:33

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問