fork(1) download
  1. <?php
  2.  
  3.  
  4. // Абстрактный класс
  5. abstract class Question
  6. {
  7. public $text;
  8.  
  9. abstract function checkAnswer($answer);
  10.  
  11. abstract function printQuestions();
  12. }
  13.  
  14. // Вопрос с выбором вариантов
  15. class ChoiceQuestion extends Question
  16. {
  17. public $options; // варианты ответа
  18. public $correntOption; // правильный вариант
  19.  
  20. public function checkAnswer($answer)
  21. {
  22. if ($this->correntOption == $answer) {
  23. return 'Верно' . PHP_EOL;
  24. } else {
  25. return 'Не верно' . PHP_EOL;
  26. }
  27. }
  28.  
  29. public function printQuestions()
  30. {
  31. # Вывод вопроса
  32. echo $this->text . PHP_EOL;
  33. foreach ($this->options as $letter => $option) {
  34. echo "{$letter}. {$option}" . PHP_EOL;
  35. }
  36. echo '' . PHP_EOL;
  37. }
  38. }
  39.  
  40. // Вопрос с вводом числа
  41. class NumericQuestion extends Question
  42. {
  43. public $answer; // ответ
  44. public $deviation; // допустмая погрешность
  45.  
  46.  
  47. public function checkAnswer($myAnswer)
  48. {
  49. if ($this->deviation >= (abs($myAnswer - $this->answer))) {
  50. return 'Верно' . PHP_EOL;
  51. } else {
  52. return 'Не верно' . PHP_EOL;
  53. }
  54. }
  55.  
  56. public function printQuestions()
  57. {
  58. echo $this->text . PHP_EOL;
  59. echo '' . PHP_EOL;
  60. }
  61. }
  62.  
  63.  
  64. # Вопрос с выбором ответа
  65. $question1 = new ChoiceQuestion;
  66. $question1->text = "Кто написал Муму ?";
  67. $question1->options = ['a' => 'Пушкин', 'b' => 'Чехов', 'd' => 'Тургенев', 'd' => 'Достоевский'];
  68. $question1->correntOption = 'd';
  69.  
  70. # Вопрос с выбором ответа
  71. $question2 = new ChoiceQuestion;
  72. $question2->text = "Кто первый ступил на луну ?";
  73. $question2->options = ['a' => 'наши', 'b' => 'не наши'];
  74. $question2->correntOption = 'b';
  75.  
  76. #Числовой вопрос
  77. $question3 = new NumericQuestion;
  78. $question3->text = 'Чему равна скорость света в км/c';
  79. $question3->answer = 299792;
  80. $question3->deviation = 10000;
  81.  
  82. #Числовой вопрос
  83. $question4 = new NumericQuestion;
  84. $question4->text = 'Чему равно число Пи';
  85. $question4->answer = 3.14;
  86. $question4->deviation = 0.002;
  87.  
  88. $questions = [$question1, $question2, $question3, $question4];
  89.  
  90. #Вывод вопросов и ответов
  91. $number = 1;
  92. foreach ($questions as $question) {
  93. echo "{$number}) ";
  94. $question->printQuestions();
  95. $number++;
  96. }
  97.  
  98. # Проверка ответов на вопросы
  99. $answers = ['d', 'g', 299999, 3.142];
  100. echo "Проверяем введенные ответы".PHP_EOL.PHP_EOL;
  101. $n = 0;
  102. foreach ($questions as $question) {
  103. echo ($n + 1) . ") ";
  104. echo $question->checkAnswer($answers[$n]);
  105. $n++;
  106. }
Success #stdin #stdout 0.02s 24432KB
stdin
Standard input is empty
stdout
1) Кто написал Муму ?
a. Пушкин
b. Чехов
d. Достоевский

2) Кто первый ступил на луну ?
a. наши
b. не наши

3) Чему равна скорость света в км/c

4) Чему равно число Пи

Проверяем введенные ответы

1) Верно
2) Не верно
3) Верно
4) Верно