fork(1) download
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  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 createQuestions()
  13. {
  14. $questions = array();
  15. $q = new Question;
  16. $q->text = "Какая планета располагается четвертой по счету от Солнца?";
  17. $q->points = 10; // 10 баллов за ответ
  18. $q->answers = array('a' => 'Венера', 'b' => 'Марс', 'c' => 'Юпитер', 'd' => 'Меркурий'); // Варианты ответа
  19. $q->correctAnswer = 'b'; // Правильный ответ
  20. $q->hint = 'Женщины с марса мужчины с венеры';
  21. $questions[] = $q;
  22. // Вопрос 2
  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. // Вопрос 3
  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. return $questions;
  39. }
  40. function printQuestions($questions)
  41. {
  42. $i = 1; // номер вопроса
  43.  
  44. foreach ($questions as $question) {
  45. echo "{$i}. {$question->text}";
  46.  
  47. echo "Варианты ответов:</br>";
  48.  
  49. foreach ($question->answers as $letter => $answer) {
  50. echo " {$letter}. {$answer}</br>";
  51. }
  52.  
  53. $i++;
  54. }
  55. }
  56. function printHint($questions){
  57. return $questions->hint;
  58. }
  59. function checkAnswers($questions, $answers)
  60. {
  61. // Проверим, что число ответов равно числу вопросов (защищаемся от ошибки)
  62. if (count($questions) != count($answers)) {
  63. die("Число ответов и вопросов не совпадает");
  64. }
  65.  
  66. $pointsTotal = 0; // сколько набрано баллов
  67. $pointsMax = 0; // сколько можно набрать баллов при всех правильных ответах
  68. $correctAnswers = 0; // сколько отвечено верно
  69. $totalQuestions = count($questions); // Сколько всего вопросов
  70.  
  71. // Цикл для обхода вопросов и ответов
  72. for ($i = 0; $i < count($questions); $i++) {
  73. $question = $questions[$i]; // Текущий вопрос
  74. $answer = $answers[$i]; // текущий ответ
  75.  
  76. // Считаем максимальную сумму баллов
  77. $pointsMax += $question->points;
  78.  
  79. // Проверяем ответ
  80. if ($answer == $question->correctAnswer) {
  81. // Добавляем баллы
  82. $correctAnswers ++;
  83. $pointsTotal += $question->points;
  84. } else {
  85. // Неправильный ответ
  86. $number = $i + 1;
  87. echo "<strong>Неправильный ответ на вопрос №{$number} ({$question->text})</strong></br>";
  88. echo "Подсказка : " . printHint($question);
  89. }
  90. }
  91.  
  92. // Выведем итог
  93. echo "</br>Правильных ответов: {$correctAnswers} из {$totalQuestions}, баллов набрано: $pointsTotal из $pointsMax";
  94. }
  95. $questions = createQuestions();
  96. printQuestions($questions);
  97. $answers = array('b', 'd', 'a');
  98. checkAnswers($questions, $answers);
  99.  
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
1. Какая планета располагается четвертой по счету от Солнца?Варианты ответов:</br>  a. Венера</br>  b. Марс</br>  c. Юпитер</br>  d. Меркурий</br>2. Какой город является столицей Великобритании?Варианты ответов:</br>  a. Париж</br>  b. Москва</br>  c. Нью-Йорк</br>  d. Лондон</br>3. Кто придумал теорию относительности?Варианты ответов:</br>  a. Джон Леннон</br>  b. Джим Моррисон</br>  c. Альберт Эйнштейн</br>  d. Исаак Ньютон</br><strong>Неправильный ответ на вопрос №3 (Кто придумал теорию относительности?)</strong></br>Подсказка : И этим студентом был ...</br>Правильных ответов: 2 из 3, баллов набрано: 15 из 45