fork download
  1. <?php
  2. class Question
  3. {
  4. public $text; // текст вопроса
  5. public $points = 5; // число баллов, по умолчанию 5
  6. public $answers; // варианты ответов
  7. public $correctAnswer; // правильный ответ
  8. public $hint; // подсказка
  9. }
  10.  
  11. $array = [
  12. 'question1' => ['question1' => 'Какая планета располагается четвертой по счету от Солнца?',
  13. 'points' => '10',
  14. 'answers' => ['a' => 'Венера марс юпитер меркурий',
  15. 'b' => 'Марс',
  16. 'c' => 'Юпитер',
  17. 'd' => 'Меркурий'],
  18. 'rightAnswer' => 'b',
  19. 'hint' => 'Она красная'],
  20.  
  21. 'question2' => ['question2' => 'Столица Англии?',
  22. 'points' => '5',
  23. 'answers' => ['a' => 'Москва',
  24. 'b' => 'Бангладеш',
  25. 'c' => 'Нью-Йорк',
  26. 'd' => 'Лондон'],
  27. 'rightAnswer' => 'd',
  28. 'hint' => 'Начинается на "л"'],
  29.  
  30. 'question3' => ['question3' => 'Кто придумал теорию относительности??',
  31. 'points' => '30',
  32. 'answers' => ['a' => 'Твоя мамка',
  33. 'b' => 'Сява',
  34. 'c' => 'Эйнштейн',
  35. 'd' => 'Путин'],
  36. 'rightAnswer' => 'c',
  37. 'hint' => 'Поехавший он']
  38.  
  39. ];
  40.  
  41.  
  42.  
  43. function createQuestions($array)
  44. {
  45. // Создаем пустой массив
  46. $questions = [];
  47.  
  48. // Создаем и заполняем первый объект
  49. $q1 = new Question;
  50. $q1->text = $array['question1']['question1'];
  51. $q1->points = $array['question1']['points'];
  52. $q1->answers = $array['question1']['answers'];
  53. $q1->correctAnswer = $array['question1']['rightAnswer'];
  54. $q1->hint = $array['question1']['hint'];
  55.  
  56. // Кладем вопрос в массив
  57. $questions[] = $q1;
  58.  
  59. // Создаем второй объект
  60. $q2 = new Question;
  61. $q2->text = $array['question2']['question2'];
  62. $q2->points = $array['question2']['points'];
  63. $q2->answers = $array['question2']['answers'];
  64. $q2->correctAnswer = $array['question2']['rightAnswer'];
  65. $q2->hint = $array['question2']['hint'];
  66.  
  67. $questions[] = $q2;
  68.  
  69. $q3 = new Question;
  70. $q3->text = $array['question3']['question3'];
  71. $q3->points = $array['question3']['points'];
  72. $q3->answers = $array['question3']['answers'];
  73. $q3->correctAnswer = $array['question3']['rightAnswer'];
  74. $q3->hint = $array['question3']['hint'];
  75.  
  76. $questions[] = $q3;
  77.  
  78. return $questions;
  79. }
  80.  
  81. function printQuestions($array)
  82. {
  83. $number = 1; // номер вопроса
  84.  
  85. foreach ($array as $question) {
  86. echo "\n{$number}. {$question->text}\n";
  87.  
  88. echo "\nВарианты ответов:\n";
  89.  
  90. foreach ($question->answers as $letter => $answer) {
  91. echo " {$letter}. {$answer}\n";
  92. }
  93.  
  94. $number++;
  95. }
  96. }
  97.  
  98.  
  99. function checkAnswers($array, $answers)
  100. {
  101. // Проверим, что число ответов равно числу вопросов (защищаемся от ошибки)
  102. if (count($array) != count($answers)) {
  103. die("Число ответов и вопросов не совпадает");
  104. }
  105.  
  106. $pointsTotal = 0; // сколько набрано баллов
  107.  
  108. // сколько можно набрать баллов при всех правильных ответах
  109. $pointsMax = 0;
  110. // сколько отвечено верно
  111. $correctAnswers = 0;
  112.  
  113. $totalQuestions = count($array); // Сколько всего вопросов
  114.  
  115. // Цикл для обхода вопросов и ответов
  116. for ($i = 0; $i < count($array); $i++) {
  117. $question = $array[$i]; // Текущий вопрос
  118. $answer = $answers[$i]; // текущий ответ
  119.  
  120. // Считаем максимальную сумму баллов
  121. $pointsMax += $question->points;
  122.  
  123. // Проверяем ответ
  124. if ($answer == $question->correctAnswer) {
  125. // Добавляем баллы
  126. $correctAnswers ++;
  127. $pointsTotal += $question->points;
  128. } else {
  129. // Неправильный ответ
  130. $number = $i + 1;
  131. echo "Неправильный ответ на вопрос №{$number} ({$question->text})\n";
  132. }
  133. }
  134.  
  135. // Выведем итог
  136. echo "Правильных ответов: {$correctAnswers} из {$totalQuestions}, баллов набрано: {$pointsTotal} из {$pointsMax}\n";
  137. }
  138.  
  139. function hint ($array, $answers){
  140.  
  141. $totalQuestions = count($array); // Сколько всего вопросов
  142.  
  143. // Цикл для обхода вопросов и ответов
  144. for ($i = 0; $i < count($array); $i++) {
  145. $question = $array[$i]; // Текущий вопрос
  146. $answer = $answers[$i]; // текущий ответ
  147.  
  148. // Проверяем ответ
  149. if ($answer == $question->correctAnswer) {
  150.  
  151. } else {
  152. // Неправильный ответ
  153. $number = $i + 1;
  154. echo "\nПодсказка к вопросу №:{$number} {$question->hint}";
  155. }
  156. }
  157.  
  158. }
  159. $questions = createQuestions($array);
  160. printQuestions($questions);
  161. $answers = array('b', 'd', 'a');
  162. $a = checkAnswers($questions, $answers);
  163. $b = hint ($questions, $answers);
  164. echo "{$a} {$b}";
  165. ?>
  166. // your code goes here
Success #stdin #stdout 0.01s 82880KB
stdin
Standard input is empty
stdout
1. Какая планета располагается четвертой по счету от Солнца?

Варианты ответов:
  a. Венера марс юпитер меркурий
  b. Марс
  c. Юпитер
  d. Меркурий

2. Столица Англии?

Варианты ответов:
  a. Москва
  b. Бангладеш
  c. Нью-Йорк
  d. Лондон

3. Кто придумал теорию относительности??

Варианты ответов:
  a. Твоя мамка
  b. Сява
  c. Эйнштейн
  d. Путин
Неправильный ответ на вопрос №3 (Кто придумал теорию относительности??)
Правильных ответов: 2 из 3, баллов набрано: 15 из 45

Подсказка к вопросу №:3 Поехавший он // your code goes here