![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: нет Всего: 1 |
Ребята. Помогите, кто чем сумеет. Встала такая задача. На PHP необходимо написать нелинейную систему тестирования. С линейной я справился давно.
Вот в чем суть проблемы. 1. 1.1 1.1.1 1.1.2 1.2 1.3 1.4 2. 2.1 2.2 3. Если ответили на вопрос 1, то переходим к 1.1. Если ответили на вопрос 1.1 переходим к 1.1.1. Если не ответили идем к 1.1.2. Другими словами необходимо пошагово обойти дерево в зависимости от правильных ответов. Я не знаю подойдет ли тут рекурсия, ведь она отрисует все дерево сразу. Как можно хотя бы примерно решить подобную задачу на связке PHP XML или на БД? Заранее спасибо всем. Это сообщение отредактировал(а) PsiMagistr - 18.8.2016, 15:27 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Вообще-то, если внимательно посмотреть на список вопросов - то система линейна. Нужно все вопросы перенумеровать с 1-цы и свести задачу к уже решенной
![]() При чем тут рекурсия? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: нет Всего: 1 |
День Вам добрый.
Каким образом свести к линейному типу? Ведь в зависимости от ответов приходится совершать прыжки к совсем другим вопросам. Например: Гоголь великий писатель?. Ответ: Нет. И тогда отсекается вся ветка вопросов о Гоголе. Переходим к другим подтемам. Ответ "Да" - продолжаем спрашивать о Гоголе. Это сообщение отредактировал(а) PsiMagistr - 18.8.2016, 15:42 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
ksnk |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Если
тогда в этом месте, вероятно
должно быть 1.2? Ok. Нужны более конкретные условия. Ответы на вопросы только да/нет или варианты? Можно схематичненько набросать описание вопросов
Такая схема подходит? Или что-то более сложное? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||||
|
|||||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: нет Всего: 1 |
Попробую.
1. Кто написал повесть "Яма"? 1.1 Как звали главную героиню повести "Яма"? 1.2 Как звали главного антигероя повести "Яма"? 2. Кто написал "Тимур и его команда"? Правильный ответ может быть только один из возможных вариантов... (radio - переключатели) Итак. Если мы отвечаем правильно на первый вопрос, переходим к подпункту 1.1, Если правильно отвечаем переходим к 1.2. Если правильно отвечаем, переходим к вопросу о Тимуре. Если же мы неправильно отвечаем на вопрос 1, либо на какой-то из подпунктов вопроса 1, сразу переходим к вопросу 2. О Тимуре. Это сообщение отредактировал(а) PsiMagistr - 18.8.2016, 18:14 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Вот так выводится нумерация и сплошная нумерация. В точке echo '...' у нас есть номер вопроса. Удобнее работать со всем набором ответ-вопрос с помощью SimpleXml. Например так
Если анализируем ответ - корректный - переходим к следующему вопросу ($cnt+1), если ответ некорректный - ищем следующий вопрос с уровнем на 1 меньше. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: нет Всего: 1 |
Cпасибо большое. Посмотрю завтра покрупнее. Со смаптфона неудобно
-------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Очевидно, что в разметке не хватает информации о правильности ответа. В качестве флага - правильный ответ или нет можно либо завести атрибут (что будет более традиционным решением), либо поместить внутрь дополнительный фейковый элемент, тогда признаком корректности ответа будет наличие внутренних элементов.
Поведение экзаменационного автомата тоже можно определить через атрибуты вопросов. Например, добавить атрибуты oncorrect="in" onfail="out" со значениями in, out, next. Next - следующий вопрос этого уровня, in - войти внутрь, out - на уровень выше. По умолчанию поведение будет oncorrect="in" onfail="out"
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |