fork download
  1. <?php
  2.  
  3. class Question
  4. {
  5. public $text; // текст вопроса
  6. public $points = 5; // число баллов, по умолчанию 5
  7. public $answers; // варианты ответов
  8. public $correctAnswer; // правильный ответ
  9. public $hint;
  10. }
  11.  
  12. function createQ() {
  13. $questions = [];
  14. $q = new Question;
  15. $q->text = "Какая планета располагается четвертой по счету от Солнца?";
  16. $q->points = 10; // 10 баллов за ответ
  17. $q->answers = array('a' => 'Венера', 'b' => 'Марс', 'c' => 'Юпитер', 'd' => 'Меркурий'); // Варианты ответа
  18. $q->correctAnswer = 'b'; // Правильный ответ
  19. $q->hint = "Богиня";
  20.  
  21. $questions[] = $q;
  22.  
  23. $q = new Question;
  24. $q->text = 'Какой город является столицей Великобритании?';
  25. $q->points = 5;
  26. $q->answers = array('a' => 'Париж', 'b' => 'Москва', 'c' => 'Нью-Йорк', 'd' => 'Лондон');
  27. $q->correctAnswer = 'd';
  28. $q->hint = "А я уеду жить в ...";
  29. $questions[] = $q;
  30.  
  31. $q = new Question;
  32. $q->text = 'Кто придумал теорию относительности?';
  33. $q->points = 30;
  34. $q->answers = array('a' => 'Джон Леннон', 'b' => 'Джим Моррисон', 'c' => 'Альберт Эйнштейн', 'd' => 'Исаак Ньютон');
  35. $q->correctAnswer = 'c';
  36. $q->hint = "Каждый двачер знает кто был этим парнем";
  37. $questions[] = $q;
  38.  
  39. return $questions;
  40. }
  41.  
  42. function printQuestions($questions)
  43. {
  44. $i = 1; // номер вопроса
  45.  
  46. foreach ($questions as $question) {
  47. echo "{$i}. {$question->text}\n";
  48.  
  49. echo "Варианты ответов:\n";
  50.  
  51. foreach ($question->answers as $letter => $answer) {
  52. echo " {$letter}. {$answer}\n";
  53. }
  54. echo "\n";
  55. $i++;
  56. }
  57. }
  58.  
  59. function checkAnswers($questions, $answers) {
  60. if (count($questions) != count($answers)) {
  61. die("Число ответов и вопросов не совпадает\n");
  62. }
  63.  
  64. $pointsTotal = 0; // сколько набрано баллов
  65. $pointsMax = 0; // сколько можно набрать баллов при всех правильных ответах
  66. $correctAnswers = 0; // сколько отвечено верно
  67. $totalQuestions = count($questions); // Сколько всего вопросов
  68. // Цикл для обхода вопросов и ответов
  69. for ($i = 0; $i < count($questions); $i++) {
  70. $question = $questions[$i]; // Текущий вопрос
  71. $answer = $answers[$i]; // текущий ответ
  72. // Считаем максимальную сумму баллов
  73. $pointsMax += $question->points;
  74. // Проверяем ответ
  75. $number = $i + 1;
  76. if ($answer == $question->correctAnswer) {
  77. // Добавляем баллы
  78. $correctAnswers ++;
  79. $pointsTotal += $question->points;
  80. echo "На $number вопрос дан правильный ответ.\n";
  81. } else {
  82. // Неправильный ответ
  83.  
  84. echo "Неправильный ответ на вопрос №{$number} ({$question->text})\n";
  85. echo "Подсказка: {$question->hint}\n";
  86. }
  87. }
  88. // Выведем итог
  89. echo "Правильных ответов: {$correctAnswers} из {$totalQuestions}, баллов набрано: $pointsTotal из $pointsMax\n";
  90. }
  91.  
  92. $test = createQ();
  93. $answers = array('b', 'd', 'a');
  94. printQuestions($test);
  95. checkAnswers($test, $answers);
  96.  
Success #stdin #stdout 0.02s 24400KB
stdin
Standard input is empty
stdout
1. Какая планета располагается четвертой по счету от Солнца?
Варианты ответов:
  a. Венера
  b. Марс
  c. Юпитер
  d. Меркурий

2. Какой город является столицей Великобритании?
Варианты ответов:
  a. Париж
  b. Москва
  c. Нью-Йорк
  d. Лондон

3. Кто придумал теорию относительности?
Варианты ответов:
  a. Джон Леннон
  b. Джим Моррисон
  c. Альберт Эйнштейн
  d. Исаак Ньютон

На 1 вопрос дан правильный ответ.
На 2 вопрос дан правильный ответ.
Неправильный ответ на вопрос №3 (Кто придумал теорию относительности?)
Подсказка: Каждый двачер знает кто был этим парнем
Правильных ответов: 2 из 3, баллов набрано: 15 из 45