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