• 締切済み

クイズCGI

10個の選択肢があるクイズを作っています。 プログラムは $問題番号=ユーザーの回答番号 という形でPOSTデータを取得します。 それで、現在1つ1つ if ($問題番号 == 正答番号) { 正解時の処理 } という文で処理を書いているのですが、問題が400近くあり、頻繁に問題を変更するので できればクイズの答えが次の形式で収録されている「test.csv」を使ってforeachあたりで 繰り返しを使いたいのですが…うまく動かすことができません。 問題番号,問題,正答番号 知恵を拝借願えないでしょうか。

  • Perl
  • 回答数1
  • ありがとう数5

みんなの回答

回答No.1

こんなイメージであってますか? 標準入力から、「問題番号=回答番号」を受け取ると、test.csvを参照してcorrect!やwrong!を返すプログラムを書いてみました。 なお、test.csvの例は次のようなものを考えています。 1,test1,1 2,test2,4 3,test3,2 実行例) 1=1 correct! 2=1 wrong! 2=4 correct! 3=1 wrong! ^C use strict; sub is_correct { my ($q_num, $ans) = @_; my ($test_line, $file); open $file, "test.csv"; my @test = <$file>; close $file; foreach $test_line (@test) { $test_line =~ s/[\r\n]//; my @test_array = split(/,/,$test_line); if ($test_array[0] == $q_num && $test_array[2] == $ans) { return 1; } } return 0; } while (<STDIN>) { my @form_answer = split(/=/,$_); if (is_correct($form_answer[0], $form_answer[1])) { print "correct!\n"; } else { print "wrong!\n"; } }

関連するQ&A

  • クイズプログラムを作りたいのですが

    ホームページに三択クイズを載せたいのですが、問題を作り、間違えたらそこで終了という形式にしたいのですが、方法がわかりません。 また、結果(正答率)等の表示を行わず、代わりに全問正解のときのみ、指定のページに飛ぶというようなプログラムは作成可能でしょうか。 拙い文章で申し訳ありません。良い方法がありましたら教えて頂きたいです。 (大衆的なブラウザで利用できるものが良いです。言語は問いません。)

  • 携帯のクイズについて

    携帯のクイズについて 携帯での4択クイズで10問を作っていましたが、1問のみのクイズにしました。 流れは以下の通りです。 問題インデックスから各問題へ移動 ↓ 4択クイズで、選択肢のどれかを選び、決定ボタンを押す ↓ 正解か、不正解がの表示と問題インデックスへ戻る為のアンカータグがある といった具合となっております。 不正行為を防ぐ為に、正解か、不正解がの表示の時点で携帯の戻るを押したら、 「不正な操作がありました」 という表示を入れたいのです。 なお、上記の処理は1つのファイルで処理しています。 どなたか、アドバイスをお願いします

    • 締切済み
    • PHP
  • JavaScriptで簡単なクイズを作りたいんですが

    今HPを作っていて簡単なクイズを入れたいのですが JavaScriptを使ってしようと思ったのですが行き詰りました・・・ クイズの形式は問題をあらかじめ書いていて テキスト部分に答えを書いて ボタンをクリックすると「正解!」や「不正解!答えは○○」 と表示されるようなものです いろんなサイトを見たのですがよく理解できませんでした サンプルのソースなどを書いていただくとありがたいです 宜しくお願いします

  • CGI クイズ(問題)perlの改造、増設、サーバー設置を行いたい。

    CGI クイズ(問題)perlの改造、増設、サーバー設置を行いたい。 perlで作成された4択問題、解答1つだけの問題を管理が面などから2~10択問題で回答も1つ解答から複数回答までいろいろ設置できるようにするにはどのように書いて改造付け加えていったらよいでしょうか。 本当に困っています、生徒に問題をクイズ eラーニングの形で出題していきたいのです問題はCSVで保存して読み込む形式です。

    • ベストアンサー
    • Perl
  • 早押しのクイズで、2択形式は不適切じゃない?

    早押しのクイズ番組で、2択や3択形式の問題は不適切だと思わない? 例えば、回答者が4人の場合、全員の力が同じだとしたら、その問題を誰かが正解する(全員答えない場合は流れる)可能性は4分の1ずつだよね。 そうすると2択問題であれば、2分の1の確率で正解できるわけだから、知らなくても特攻したほうが有利だし、これが他の回答者よりも力の劣る者であれば、もともとの確率が4分の1もないわけだから、なおさら勘で特攻することになっている。 まあ、番組を盛り上げたり(クイズ好きの私としては白けるだけだが)、雑魚救済の趣旨だと言われれば、そうですかとしか言えないが。 皆さんは、どう思いますか?

  • 早押しクイズの戦略

    よろしくお願いします。 お暇でしたらお付き合いください。 1週間は締め切らずにお待ちしております。 早押しクイズで、 正解の確率(勿論、ほかの解答者が正解する前ですが)を最大にするためには、 問題文が読まれ始めてから何秒後にボタンを押せばよいか、 について考え始めているところです。 与えなければいけない条件として、 ・問題文が読まれ始めてからの秒数と、問題内容の理解度との関係を表す関数  (問題文が読まれ始めてからの秒数と、問題文の全容が予想できるまでの時間というイメージ) ・仮に問題文全文がわかった場合の、自分の正答率 (他の解答者にも同じ正答率が適用できるならば、その問題の「難易度の逆」) ・解答者の全人数 (人数が多いほど、早めに押さなくてはいけなくなるはず) ・簡単のため、自分が不正解した後は、ほかの誰かが必ず正解してしまう、と決めるのがよい? などが考えられるかなと勝手に思っています。 ほかの解答者達も同じ戦略で来る場合、同時にボタンを押すことになってしまうので、それをどう扱うかも悩みどころです。 【質問】 モデルの立て方、数式、アイデア、コメント、どれでもよいですから、 膨らましていただけますと幸いです。(ある意味、ブレインストーミング) 今回は、最終的な答えまでたどり着かなくてもよいと思っています。

  • 自己学習用クイズ作成ソフトを探してます

    はじめまして。 資格取得のため勉強しています。 本で勉強するだけでなく、効率的に自己テストを行いたいので、 次のような「自己学習用クイズ作成ソフト」を探しています。 ・フリーソフト(または安価なソフト) ・自分で問題、回答を作成できる ・択一問題ではなく、一問一答形式 ・問題を科目ごと、単元ごと等に数段階のフォルダに分けられる ・任意の層のフォルダを指定してランダムに出題できる ・回答の入力は不要で、正答を表示するのみ 一つのボタンで、出題→正答表示→出題→正答表示のようにサクサク学習できるようなソフトがほしいです。 欲を言えば、択一問題も作れるとうれしいですが、メインは一問一答形式です。 更に欲を言えば、問題ごとに「理解度」を設定し、出題時に「理解度」でフィルターをかけられると尚良いです。 ベクター等で探しても、希望に合致するソフトはないようでした。 どなたか御存知でしたら教えてください。 よろしくお願いします!

  • javaでクイズ

    最初の問題(最初の画面) (1) (2) (3) ↓ ↓ ↓ × × ○     第二問     (1) (2) (3)     ↓ ↓ ↓     ○ × × 第三問 (1) (2) (3) ↓ ↓ ↓ × × ○      第四問      (1) (2) (3)      ↓ ↓ ↓      × × ○          第五問          (1) (2) (3)          ↓ ↓ ↓          × ○ ×            第六問 (1) (2) (3)            ↓ ↓ ↓            × × ○                第七問 (1) (2) (3)                ↓ ↓ ↓                ○ × × というクイズのプログラムを作ろうとしています。 画面数は全部で22ページあって(一番初めの画面は00という名前にしてあります)正解ページと次の問題画面が一緒なので22ページになります。実際ページにつけた番号は21までですが・・・ 間違った答えのページに行くと「previous」で前の画面に戻ったり、間違った答えのページでは下に表示してある回答ボタンを押せないようにしたりしたいです。一画面一画面ifで設定する必要があるのでしょうか?

  • iアプリでクイズのプログラムを作成したい

    多肢選択式クイズのiアプリを作成したいと考えております。サーバ上のテキストファイルから問題と答えを読み込んで1問ずつ表示し、正解すると正解と表示した後に次の問題へ、不正解の場合は正しい答えを表示した後に次の問題へ進むようにし、すべての問題が終わったら正答数を表示するような感じで、問題は上記のように多肢選択式にしたいと考えております。 色々と本やwebページを見て、サーバ上のテキストファイルを単純に読み込むだけのプログラムや、ボタンを押す毎にPanelを切り替えるプログラムなど、簡単なプログラムは作ることができるようになったのですが、ここで行き詰まってしまいました。 どのようにすればよいか教えてください。お願いします。

  • csvに中身が書き込まれない

    作成してみたものがうまく動かず、どこがおかしいのかよく分からないため、 質問させていただきます。 もともとtest.csvにはUTF-8で作成した中身があります。 ひとつ前の画面でPOST送信しているフォームがあり、 中身のデータは下記です。 <form action="kakikomi.php" method="post"> <input type="hidden" name="aaa" value="bbb,ccc,ddd"> </form> #kakikomi.php(UTF-8) $csvFileName="test.csv";$csv=array(); foreach($_POST as $val){$csv[]=explode(",",$val);} setlocale(LC_ALL,"ja_JP.UTF-8"); if( $pointer=fopen($csvFileName,"w")): foreach($csv as $line){fputcsv($pointer,$line);} fclose($pointer); //print_r($csv); else:die('メッセージ'); endif; この結果はcsvの中身は真っ白になってしまいます。 fputcsvのマニュアル例からそのまま引用したのですがどこかおかしいのでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう