Перейти к содержимому


[Решено] Ответы по разным шкалам


Сообщений в теме: 4

#1 Viktor

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 21 Ноябрь 2019 - 12:14

Добрый день.

Тестирую демонстрационную версию программы и возник вопрос с подсчетом результата, вернее как его реализовать. Для примера: имеем вопрос с множественным выбором ответов и 5 вариантов ответов. Нужно реализовать, что бы при выборе определенного ответа, результат относился к определенной шкале. Нюанс еще в том, что на один вопрос ответов может быть несколько, и соответственно балы за эти ответы должны разноситься по соответствующим шкалам.

#2 Administrator

    Менеджер проекта

  • Администраторы
  • 1 224 сообщений

Отправлено 21 Ноябрь 2019 - 13:17

Здравствуйте, Виктор!

Это можно сделать. В INDIGO можно сделать что угодно. В данном случае требуется немножко простого программирования. Для вопросов множественного выбора нужно включить опцию "За каждый вариант ответа свой балл" и проставить степени двойки 2 4 8 16 32.

Изображение


Когда пользователь будет выбирать варианты ответа эти баллы будут суммироваться.

Сумма таких чисел в двоичной системе счисления выдает значения типа 00000 - когда все не отвеченные, или 2+4+8+16+32=62, что в двоичной системе счисления 11111 - когда все отвеченные, или, например, 2=00001, когда первый отвечен, а другие нет. Или 10101, когда отвечены 1 3 и 5-ый вариант ответа. Т.е. получая простую сумму баллов мы можем в двоичной системе счисления задетектить на какие именно варианты ответа был дан ответ, т.к. каждое число располагается в отдельном разряде двоичной системы счисления. Для удобства обработки мы написали функцию:

function f($a,$n)
{
return ($a & pow(2,$n)) ? 1 : 0;
}

Она проставляется только в первой шкале, чтобы она стала доступна во всех остальных шкалах.

Изображение

Данная функция в первом аргументе принимает балл за вопрос, а во втором требуемый вариант ответа. Возвращает 0, если в этом вопросе данный вариант ответа не был проставлен пользователем, и возвращает 1, если в данном вопросе этот вариант ответа был проставлен.

Использовать это можно следующим образом:

Изображение

Если за первый вопрос пользователь выберет первый варианта ответа, то добавим +1 балл в шкалу.
Если за второй вопрос пользователь выберет третий варианта ответа, то добавим +1 балл в шкалу.
Если за третий вопрос пользователь выберет пятый варианта ответа, то добавим +1 балл в шкалу.

Изображение

Если за первый вопрос пользователь выберет второй варианта ответа, то добавим +1 балл в шкалу.
Если за второй вопрос пользователь выберет четвертый варианта ответа, то добавим +1 балл в шкалу.
Если за третий вопрос пользователь выберет пятый варианта ответа, то добавим +1 балл в шкалу.

Вывод результатов:
Изображение

Файл с тестом прикладываю к письму.

Прикрепленные файлы



#3 Viktor

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 21 Ноябрь 2019 - 13:29

Спасибо, попробую.


#4 cep 3epo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 47 сообщений

Отправлено 21 Ноябрь 2019 - 15:37

Добрый день, Станислав Викторович!

Мне кажется, что сегодняшнее Ваше предложение решает еще одну специфическую задачу. Объясню для форумчан и напомню Вам. Мне нужно было, чтобы в тестах с выбором нескольких вариантов каждый правильный ответ, обозначенный галочкой, давал 1 балл и каждый неправильный вариант, НЕ обозначенный галочкой – тоже 1 балл. Схематически см. на снимке1 (знак # обозначает результативный вариант). Итого: от 0 до 5 баллов.

Я ввел дополнительную функцию, отличающуюся от Вашей диаметрально противоположным возвращением 0 и 1. Оцените вкратце, пожалуйста.

Что не понравилось:

1: Представление результатов в журнале (см. снимок2).
2: Чтобы набрать предусмотренные шкалами 6 баллов, можно не париться: расставить все 15 галок. При этом просмотр результатов невозможен (ошибок-то по факту нет). В моем же тесте при 15 галочках в колонке «Результат» выводится <ошибка тип 1>.
3: Как при значениях 2, 4, 8, 16, 32… считать общий результат за все задание, если в нем есть другие типы вопросов (с ценой 1 балл за тест)?

p/s Высказанные замечания имеют целью не критику, а стимулирование к усовершенствованию. Поскольку в программировании я не силен, предложенным вариантом больше чем доволен.

Прикрепленные изображения

  • Прикрепленное изображение: снимок1.jpg
  • Прикрепленное изображение: снимок2.jpg

Прикрепленные файлы



#5 Administrator

    Менеджер проекта

  • Администраторы
  • 1 224 сообщений

Отправлено 21 Ноябрь 2019 - 16:41

Цитата

1: Представление результатов в журнале (см. снимок2).
2: Чтобы набрать предусмотренные шкалами 6 баллов, можно не париться: расставить все 15 галок. При этом просмотр результатов невозможен (ошибок-то по факту нет).

- В будущем мы расширим функционал, и когда это будет все не лайфхак, а встроенная функция, то выдача результатов в вебе будет без этих нюансов. Сейчас же подобные механизмы чаще всего применяются не в контроле знаний, а во всякого рода психологических тестах или опросах, где пользователю выводить список вопросов с ошибками не нужно, т.к. понятия верных или неверных ответов нет.

Цитата

В моем же тесте при 15 галочках в колонке «Результат» выводится <ошибка тип 1>

- Вы добавили шкалы "Функция2" и "Итого", а деления для них не выключили. Значения не попадают в деление по умолчанию и происходит ошибка. Отключите деления.

Цитата

3: Как при значениях 2, 4, 8, 16, 32… считать общий результат за все задание, если в нем есть другие типы вопросов (с ценой 1 балл за тест)?

- Нужно другие вопросы включить в шкалу путем их суммирования, но уже без обертывания в вызов функции. Если же для других типов вопросов нужна какая-та другая обработка, то можно также создать отдельные функции f3(), f4() и т.д. для их обработки.

p.s. для f2() Вам не обязательно было создавать отдельную Шкалу, можно было ее прописать туда же, где и f1().




Ответить



  


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных