помогите с конструктором тестов, нужна помощь |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
помогите с конструктором тестов, нужна помощь |
glebik |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: 0 |
нужна прога - конструктор тестов на pascal
в ней используются разные типы вопросов,программа создаёт и проводит тест . помогите пожалуйста ,если есть готовая прога или наработки. Сообщение отредактировано: glebik - |
glebik |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: 0 |
Напишу потробней. Эта прога предназначена:1)человек может вводить в неё вопросы и варианты ответов причём вопросы могут быть
разными. с 1 прав. ответом, с несколькими. вопрос на сортировку.соответствие 2) а вторая часть проводит этот самый тест. вообще получается что программы будет две:одна для 1 части,другая для 2. |
glebik |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: 0 |
Мне сказали как должна выглядеть процедура ввода.
В проге используются типы вопросов: 1) непосредственный ввод(при этом вопрос может иметь нес колько правильных ответов-синоним,например Пушкин и А.С. Пушкин оба являются правильными и тд) 2) один правильный из нескольких(причём эти несколько не постоянное а вводится) 3) несколько правильных из нескольких(опять же эти несколько не постоянное а вводится) 4)на соответствие 5)на сортировку У меня есть описание записи которую необходимо использовать для реализации процедуры: type test=record vopros: string[50] (текст вопроса) typ: [1..5] (выбор типа вопроса) kolotv: byte(кол-во ответов, вводится) otvety: array [1..100] of string;(ответы) prav: array [1..100] of string;(правильные ответы) Необходимо чтобы эта процедура была универсальной для любого вопроса. Как это сделать? ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
volvo |
Сообщение
#4
|
Гость |
glebik, хотя бы по одному примеру вопросов каждого типа (с ответами, разумеется) приведи...
Это первое. Второе: та структура, которую ты привел - это строго задано, и отступать от этого никак нельзя, или могут быть другие решения? (Я бы, например, предпочел сделать запись с вариантами, если у тебя есть несколько типов вопросов, а храниться они должны в одной структуре). |
Артемий |
Сообщение
#5
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
Хотелось-бы узнать:
1. После заполнения данной записи, что с ней делается? Она записываетсяв файл, и потом прога номер 2 считывает из файла этот вопрос и варианты? Или как? 2. Пользователь может задавать несколько вопросов или только один? Добавлено через 0.00001 сек. Ой прости volvo, когда писал вопрос, твоего ответа еще не было... Сообщение отредактировано: Артемий2 - -------------------- Dum spiro spero!
|
Гость |
Сообщение
#6
|
Гость |
Ладно! 1)тип непосредственный ввод(Вопрос: кто написал "война и мир"? Ответ:Толстой. Л.Н Толстой . Толстой Л.Н - все 3 ответа верны
какой бы мы не ввели при решении) 2) один правильный из нескольких (Вопрос:кто написал "война и мир"? варианты ответов:1)Пушкин 2)Лермонтов 3)Толстой 4)Карамзин Прав.ответ: Толстой) 3) несколько правильных из нескольких (Вопрос:Столицей какой страны является Лондон? варианты ответов:1)Англия 2)Великобритания 3)Польша 4)Россия Прав.ответ:1 и 2 4)на соответствие(это помоему самый неприятный тип) Составить соответствие(страна-столица): 1)Англия 1)Москва 2)Украина 2)Киев 3)Россия 3) Лондон Прав.ответ:1-3,2-2,3-1 5)на сортировку Задание:Расположите события в хронологической последоват-ти(от самого раннего к более позднему): 1)Война с Наполеоном 2)Великая Отечественная Война 3)"Ледовое побоище" Прав.ответ:3.1.2 ----------------------------------------------------------------------------------- Что касается структуры процедуры. то это не обязательный вариант. можно и по другому. но только желательно чтобы вся вводимая информация хранилось в 1-м файле. Что касается кол-ва вопросов. то их кол-во задётся при создании теста.Прога номер 2 считывает из файла эти вопросы и варианты. P.S:Спасибо за интерес к моей проблеме! |
Артемий |
Сообщение
#7
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
По первому - надо все-таки вводить количество правильных ответов (допутим их 4 - Толстой. Л.Н Толстой . Толстой Л.Н,Карамзин) или скоко ответов просто, стоко ответов и правильных?(допутим их 3 - Толстой. Л.Н Толстой . Толстой Л.Н - все правильные, и получается скоко ответов просто - стоко и правильных)
-------------------- Dum spiro spero!
|
Артемий |
Сообщение
#8
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
Вот,смотри я дам наброски, если что-то не так, то пиши! Данные записываются в ban.dat.
(тут только по первым трем вариантам) type -------------------- Dum spiro spero!
|
volvo |
Сообщение
#9
|
Гость |
Я бы делал так (если тебя заинтересует ТАКОЙ вариант - пиши, будем развивать дальше, это не так сложно, как кажется на первый взгляд, если сделать парочку маленьких дополнительных процедур, объем приведенного фрагмента сократится вдвое):
Как видишь, никаких обработок ошибок (кроме контроля границ номеров) не производится, что дает мне, например, возможность, ввести все 3 одинаковых индекса для вопроса 5-го типа... Это все будет добавлено в дальнейшем, если ты вообще захочешь эту программу продолжить... Цитата По первому - надо все-таки вводить количество правильных ответов Я бы не стал этого делать (и как видишь, не сделал)... Поступаем проще - часть программы, ПРИНИМАЮЩАЯ ответ тестируемого, проверяет, допустим, схожесть строк (например, по Левинштейну) и по проценту похожести делает вывод: принимать или не принимать ответ как правильный... |
Гость |
Сообщение
#10
|
Гость |
Прежде всего спасибо за помощь!
Посмотрел твой набросок, очень даже неплохо, но у меня появились вопросы: 1)Что такое Ban: array [1..1] of Test и почему 1..1? 2)И в конце for i:= 1 to 1 do Write(F,Ban[i]); Непонятное для меня место. Ответь , если не сложно. ------------------------------------------------------------------------------- Volvo пока писал ответ Артемию2.появился твой. я обязательно проанализирую твою процедуру и напишу вопросы или своё мнение. Спасибо огромное! |
Артемий |
Сообщение
#11
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
Прости, вот поправка:
Ban[1]:=T; {И дальше по старому...} Добавь это между end; и Assign(F,'ban.dat'); Добавлено через 4 мин. Цитата 1)Что такое Ban: array [1..1] of Test и почему 1..1? Массив с одной записью нашего Test=record. 1..1 потому что делаем в цикле, и я не вижу смысла делать несколько записей, хватит одной.. Цитата 2)И в конце for i:= 1 to 1 doWrite(F,Ban[i]);Непонятное для меня место. Сдесь мы записываем в ban.dat все наши данные, которые мы заполнили, то есть всю запись с введенными данными... Добавлено через 59 сек. Прости нет времени доделать пункт 4 и 5, но volvo дал хороший код, попробуй им.... Сообщение отредактировано: Артемий2 - -------------------- Dum spiro spero!
|
Гость |
Сообщение
#12
|
Гость |
Спасибо за прогу Volvo , я посмотрел её, сначала она показалась мне трудной,
но внимательно посмотрев увидел, что она довольно понятная. Но каким образом её можно упростить? |
volvo |
Сообщение
#13
|
Гость |
Цитата каким образом её можно упростить? Я знал, что ты это спросишь... Смотри:
|
Артемий |
Сообщение
#14
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
Если никто не возражает, покажу свой способ..
(тут как и раньше в dat файл, а из него потом можно считать данные...) type Сообщение отредактировано: Артемий2 - -------------------- Dum spiro spero!
|
glebik |
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: 0 |
Volvo и Артемий2 , честно говоря просто не ожедал, что кто-то вообще откликнется на мою
прозьбу. А тут такая большая помощь с вашей стороны , побольше бы таких отзывчивых людей... Теперь я займусь 2-ой прогой и уж простите меня за назойливость, но наверняка у меня будут трудности и вопросы, поэтому я расчитываю на вашу помощь. Если вы не будете мне помогать то я не обижусь, ведь вы итак много зделали для меня. СПАСИБО!!!!!! |
glebik |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: 0 |
Начал писать прогу исрузу столкнулся с проблемами:
1) Volvo ты что-то писал об обработке 1-го типа по Левинштейну, впервые слышу, как это реализовать? 2)Ёще не знаю как обработать 4 и 5 типы вопрсов. Подскажите, что делать, пожалуйста! |
volvo |
Сообщение
#17
|
Гость |
Цитата об обработке 1-го типа по Левинштейну Нет, я уже посмотрел - это не совсем подойдет... Дело в том, что функция похожести двух строк, например, для "L.N. Tolstoy" и "Tolstoy L.N." выдаст, что строки похожи на 14%, а этого очень мало... Надо искать другой путь... Например, задавать список слов, котовые должны быть в ответе, и потом каждое слово из введенного пользователем ответа проверять на присутствие в шаблоне... Например, для твоего варианта, подойдет так:Шаблонный ответ: "Толстой Лев Л. Н." тогда, если отвечающий введет, например, "Лев Толстой" - то проверяем: отдельно Лев есть в шаблонной строке? Есть. Отдельно Толстой есть? Есть... Все, значит, правильно ответил... Точно так же будет, если введут "Л. Толстой" и если "Л. Н. Толстой" - все эти варианты будут признаны правильными, посколько из 2-х или 3-х слов ответа нет ни одного НЕсовпадения с шаблоном... Идея понятна? Для большей гарантии я бы еще перед сравнением строк переводил их ОБЕ в верхний или нижний регистр (функция для этого есть здесь: Строки - называется StrLower или StrUpper)... С обработкой четвертого и пятого типов вопросов вообще нет проблем: в четвертом ты точно так же, как я показывал, просишь пользователя ввести R.ans_count пар чисел, а в пятом - столько же целых чисел, и потом просто сравниваешь введенные пары/числа с тем, что хранится соответственно в R.good_ans4 или R.good_ans5... Если есть ПОЛНОЕ совпадение - ответ правильный, иначе - неверно... |
Артемий |
Сообщение
#18
|
Помощник капитана Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: 2 |
glebik, вот если надо, я набросал тестер, который на основе первого моего варианта считывает инфу из ban.bat и преобразут в тест, где пользователь сможет выполнять его....смотри...
type -------------------- Dum spiro spero!
|
glebik |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: 0 |
Артемий2 в твоей 1-й проге , при запуске в строчке Ban: array [1..10] of Test
комп выдаёт ошибку:Structure too large. И вообще за что Ban: array [1..10] of Test отвечает? И что такое label 10? |
volvo |
Сообщение
#20
|
Гость |
Цитата в твоей 1-й проге , при запуске в строчке Ban: array [1..10] of Test А дело все в том, что Артемий2 никак не хочет понять, что для проверки работы программ из этого раздела НЕЛЬЗЯ пользоваться Дельфи... Турбо Паскаль не позволит выделить во-первых, одну структуру размером больше 65520 байт (а Ban имеет размер 80540 байт), а во-вторых, сумма всех размеров статических переменных не должна превышать те же самые 65520 байт...комп выдаёт ошибку:Structure too large. |
Текстовая версия | 11.01.2025 5:15 |