<?php
header('Content-Type: text/html; charset=utf-8'); class Question
{
public $text; // текст вопроса
public $points = 5; // число баллов, по умолчанию 5
public $answers; // варианты ответов
public $correctAnswer; // правильный ответ
public $hint; // Подсказка
}
function createQuestions()
{
$q = new Question;
$q->text = "Какая планета располагается четвертой по счету от Солнца?";
$q->points = 10; // 10 баллов за ответ
$q->answers = array('a' => 'Венера', 'b' => 'Марс', 'c' => 'Юпитер', 'd' => 'Меркурий'); // Варианты ответа $q->correctAnswer = 'b'; // Правильный ответ
$q->hint = 'Женщины с марса мужчины с венеры';
$questions[] = $q;
// Вопрос 2
$q = new Question;
$q->text = 'Какой город является столицей Великобритании?';
$q->points = 5;
$q->answers = array('a' => 'Париж', 'b' => 'Москва', 'c' => 'Нью-Йорк', 'd' => 'Лондон'); $q->correctAnswer = 'd';
$q->hint = '.. из зе кепитал оф Грейт Британ';
$questions[] = $q;
// Вопрос 3
$q = new Question;
$q->text = 'Кто придумал теорию относительности?';
$q->points = 30;
$q->answers = array('a' => 'Джон Леннон', 'b' => 'Джим Моррисон', 'c' => 'Альберт Эйнштейн', 'd' => 'Исаак Ньютон'); $q->correctAnswer = 'c';
$q->hint = 'И этим студентом был ...';
$questions[] = $q;
return $questions;
}
function printQuestions($questions)
{
$i = 1; // номер вопроса
foreach ($questions as $question) {
echo "{$i}. {$question->text}";
echo "Варианты ответов:</br>";
foreach ($question->answers as $letter => $answer) {
echo " {$letter}. {$answer}</br>";
}
$i++;
}
}
function printHint($questions){
return $questions->hint;
}
function checkAnswers($questions, $answers)
{
// Проверим, что число ответов равно числу вопросов (защищаемся от ошибки)
die("Число ответов и вопросов не совпадает"); }
$pointsTotal = 0; // сколько набрано баллов
$pointsMax = 0; // сколько можно набрать баллов при всех правильных ответах
$correctAnswers = 0; // сколько отвечено верно
$totalQuestions = count($questions); // Сколько всего вопросов
// Цикл для обхода вопросов и ответов
for ($i = 0; $i < count($questions); $i++) { $question = $questions[$i]; // Текущий вопрос
$answer = $answers[$i]; // текущий ответ
// Считаем максимальную сумму баллов
$pointsMax += $question->points;
// Проверяем ответ
if ($answer == $question->correctAnswer) {
// Добавляем баллы
$correctAnswers ++;
$pointsTotal += $question->points;
} else {
// Неправильный ответ
$number = $i + 1;
echo "<strong>Неправильный ответ на вопрос №{$number} ({$question->text})</strong></br>";
echo "Подсказка : " . printHint($question);
}
}
// Выведем итог
echo "</br>Правильных ответов: {$correctAnswers} из {$totalQuestions}, баллов набрано: $pointsTotal из $pointsMax";
}
$questions = createQuestions();
printQuestions($questions);
$answers = array('b', 'd', 'a'); checkAnswers($questions, $answers);