fork download
  1. <?php
  2.  
  3. // Общий вопрос
  4. class Question
  5. {
  6. public $text;
  7.  
  8. public $details;
  9. }
  10.  
  11. class ChoiceQuestionDetails
  12. {
  13. public $options;
  14. public $correntOption;
  15.  
  16. public function checkAnswer($answer)
  17. {
  18. if ($this->correntOption == $answer) {
  19. return true;
  20. } else {
  21. return false;
  22. }
  23. }
  24.  
  25. public function printQuestions()
  26. {
  27. # Вывод вопроса
  28. echo '' . PHP_EOL;
  29. foreach ($this->options as $letter => $option) {
  30. echo "{$letter}. {$option}" . PHP_EOL;
  31. }
  32. echo '' . PHP_EOL;
  33. }
  34. }
  35.  
  36. class NumericQuestionDetails
  37. {
  38. public $answer;
  39. public $deviation;
  40.  
  41. public function checkAnswer($myAnswer)
  42. {
  43. if ($this->deviation >= (abs($myAnswer - $this->answer))) {
  44. return true;
  45. } else {
  46. return false;
  47. }
  48. }
  49.  
  50. public function printQuestions()
  51. {
  52. echo '' . PHP_EOL;
  53. }
  54. }
  55.  
  56. $questions = []; // список всех вопросов
  57. $numericQuestions = []; // список деатлей вопросов с вводом числа
  58. $choiceQustions = []; //// список деатлей вопросов с выбором ответа
  59. // Первый вопрос
  60. $question = new Question;
  61. $question->text = '1 + 1 =';
  62. $questions[1] = $question;
  63.  
  64. // Второй вопрос
  65. $question = new Question;
  66. $question->text = '1 + 2 =';
  67. $questions[2] = $question;
  68.  
  69. // Детали вопроса 1 с вводом числа
  70. $numericQuestion = new NumericQuestionDetails;
  71. $numericQuestion->answer = 2;
  72. $numericQuestion->deviation = 0;
  73. $numericQuestions[1] = $numericQuestion;
  74.  
  75. // Детали вопроса 1 с выбором овтета
  76. $choiceQustion = new ChoiceQuestionDetails;
  77. $choiceQustion->options = ['a' => '1', 'b' => '2'];
  78. $choiceQustion->correntOption = 'b';
  79. $choiceQustions[1] = $choiceQustion;
  80.  
  81. // Детали вопроса 2 с вводом числа
  82. $numericQuestion = new NumericQuestionDetails;
  83. $numericQuestion->answer = 3;
  84. $numericQuestion->deviation = 0;
  85. $numericQuestions[2] = $numericQuestion;
  86.  
  87. // Детали вопроса 2 с выбором ответа
  88. $choiceQustion = new ChoiceQuestionDetails;
  89. $choiceQustion->options = ['a' => '2', 'b' => '3'];
  90. $choiceQustion->correntOption = 'b';
  91. $choiceQustions[2] = $choiceQustion;
  92.  
  93. $questions[1]->details = $choiceQustions[1];
  94. $questions[2]->details = $numericQuestions[2];
  95.  
  96. $numberQ = 1;
  97.  
  98. foreach ($questions as $question) {
  99. echo "{$numberQ}) ";
  100. echo $question->text;
  101. $a = $question->details->printQuestions(); // корректна ли такая запись ?
  102. $numberQ++;
  103. }
  104.  
  105. $answers = ['b', 3];
  106. echo PHP_EOL . 'Проверяем введенные ответы' . PHP_EOL;
  107.  
  108. for ($i = 1; $i <= count($questions); $i++) {
  109. echo "{$i}) ";
  110. if ($questions[$i]->details->checkAnswer($answers[$i-1])) {
  111. echo 'Верно' . PHP_EOL;
  112. } else {
  113. echo 'Не верно' . PHP_EOL;
  114. }
  115. }
Success #stdin #stdout 0.02s 24444KB
stdin
Standard input is empty
stdout
1) 1 + 1 =
a. 1
b. 2

2) 1 + 2 =

Проверяем введенные ответы
1) Верно
2) Верно