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

Варианты ответов:
  a. Венера
  b. Марс
  c. Юпитер
  d. Меркурий
2. Какой город является столицей Великобритании?

Варианты ответов:
  a. Париж
  b. Москва
  c. Нью-Йорк
  d. Лондон
3. Кто придумал теорию относительности?

Варианты ответов:
  a. Джон Леннон
  b. Джим Моррисон
  c. Альберт Эйнштейн
  d. Исаак Ньютон
Неправильный ответ на вопрос №1 (Какая планета располагается четвертой по счету от Солнца?)
Подсказка: Планета названа в честь бога войны

Неправильный ответ на вопрос №2 (Какой город является столицей Великобритании?)
Подсказка: .... ис зе кэпитал оф Грейт Британ

Неправильный ответ на вопрос №3 (Кто придумал теорию относительности?)
Подсказка: Любитель показывать язык

Правильных ответов: 0 из 3, баллов набрано: 0 из 45