Массивы
|
|
Alex3A | Дата: Четверг, 18 Февраля 2010, 11:03 | Сообщение # 61 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (Игорь) у него тупо таблица А построить график по таблице и описать его математически, формулой? Там должно быть что то линейное, или мож экспонента.
|
|
| |
Игорь | Дата: Понедельник, 11 Октября 2010, 13:33 | Сообщение # 62 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Так... снова затруднения... Может, тут массивами не нужно, но решил попробовать и застопорился. Делается экзаменатор на права тракториста. 45 билетов. В каждом-8 вопросов. Вопрос - отсканированная картинка, то есть текстовых блоков нет - все в иллюстрации. ответы вводятся с клавиатуры. Сперва на первой странице выбирается билет (или автоматом, по случайному числу) - переходим на другую страницу, где собственно и начинается экзамен. Номер биолета - это номер соответствующей папки, в которой соответственно 8 картинок. Сразу грузится первая. Правильные ответы хотел было записать в массив типа V1[1]=1 V1[2]=4 и т.д. - после V - это номер билета, то ,что в скобках - номер вопроса в этом билете далее. При выборе билета переменной bilet$ присваивается соответственная цифра, например, при выборе первого билета получаем bilet$='1' по этой переменной формируем путь, откуда берутся билеты-картинки test_okno$='<SrcDir>\Data'+CHR(92)+bilet$+CHR(92)+'1.jpg' И... что дальше? Предположим, выбираю я второй вариант ответа - жму клавишу 2, и там некоей переменной присваивается значение 2. Но как теперь найти в массиве правильных ответов именно V1[1], чтобы сравнить? Ведь нужно отыскать и номер билета, и номер вопроса? Я пытался ввести некую переменную pr$='o'+bilet$+'[1]', т.е. хотел получить массив ответов на вопросы билета типа o1[1]... И все, запутался окончательно... p.s. на сайте есть два проекта тестов, но они работают по немного другим принципам... у меня файл результатов должен находиться в теле программы, а не во внешнем файле. И должна быть возможность пропуска ответов. Не знаю, может, массивы тут и не причем?
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
YURIY | Дата: Понедельник, 11 Октября 2010, 15:14 | Сообщение # 63 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Советую использовать следующий принцип. Каждый билет мы оформим вот таким образом: Code V$[1]='4|1|1|2|1|2|3|4|' V$[2]='1|2|2|4|1|3|4|1|' [N] - номер билета, а с правой части, через разделитель, правильные варианты ответа для каждого из восьми вопросов. Почему так удобнее организовать данные? Да потому, что их потом элементарно извлечь! Quote (Игорь) при выборе первого билета получаем bilet$='1' Эта переменная нам нужна, чтобы подставить её в индекс массива V$. Но только предварительно она должна быть числовой. Вот так: Получим: V$[bilet]. Теперь знаем, в какой массив из 45 лезть за правильными ответами. Далее. При переходах на страницу вперёд/назад ты должен иметь некую переменную, в которой отражается текущий номер вопроса. Получить правильный ответ этого вопроса уже совсем просто: Code answer$=GetArrayItem(V$[bilet],'|',q) где q - номер текущего вопроса. При значении bilet = 1 и q = 5, с помощью кода выше мы получим правильный ответ на текущий вопрос (глядя на мой массив в начале сообщения) в виде цифры 1. Ну а дальше - дело техники. Как ты будешь подсчитывать правильные ответы. Можешь создать массив, например, Q, и заносить туда ответы пользователя. Зачем так? А потому, что он может пропускать вопросы и возвращаться к ним, изменяя ответ. Например, ответил пользователь на третий вопрос (при этом q=3), ты заносишь: Code Q[q ]=переменная_с_номером_выбранного_ответа (пардон за лишний пробел после q - форум выделывается) В конце делаем вот что: Code result=0 For i=1 To 8 If (Q[i]=VAL(GetArrayItem(V$[bilet],'|',i))) Then result=result+1 End Next i Message("","result") Число правильных ответов у тебя уже в result. Дальше математика - огласка оценки...
Вечная память Андрею Сергееву!
|
|
| |
Игорь | Дата: Вторник, 12 Октября 2010, 07:10 | Сообщение # 64 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (YURIY) V$[1]='4|1|1|2|1|2|3|4|' V$[2]='1|2|2|4|1|3|4|1|' Да!!!! Действительно, зачем валить все вопросы в одну кучу, когда при выборе вопроса можно задать конкретный массив к этому вопросу! Так, и с остальным уже поколупаюсь... Спасибо! Добавлено (12 Октябрь 2010, 07:10) --------------------------------------------- а, ну вот, показываю черновик, что наделал дома - дома инета нет пока, потому пришлось кумекать самостоятельно. Только на работе увидел ответ на форуме. Конечно, не так аккуратно получается, в скриптах, имею ввиду, правда, работоспособно. Одно но - не могу заставить возвращаться к пропущенному вопросу. Если возможно, посмотри, потому как переделывать - лучше сделать заново, а заново у меня еще две подобные работы, но там и билетов поболее и немножко с картинками свистопляска другая, поэтому я твой вариант лучше поколупаю для более сложной работы.
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Игорь | Дата: Вторник, 12 Октября 2010, 07:24 | Сообщение # 65 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| архив не мог прикрепить - там в примере два билета, один убрал - иначе архив 700 кб получается Добавлено (12 Октябрь 2010, 07:24) --------------------------------------------- управляется с клавиатуры - при первом нажатии на клавишу выбора, номер ответа отображается в окошке, если уверен - подтвердить повторным нажатием. (таковы условия задачи)
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Alex3A | Дата: Вторник, 12 Октября 2010, 13:08 | Сообщение # 66 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Игорь, А если засунуть это в базу данных, можно получить более универсальную вещь, подменяя базу данных получаем билеты по разным темам, предметам.
|
|
| |
Игорь | Дата: Вторник, 12 Октября 2010, 13:18 | Сообщение # 67 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| так там же иллюстрации... это какая база должна быть...
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Serg | Дата: Вторник, 12 Октября 2010, 14:30 | Сообщение # 68 |
Ветеран форума
Группа: Проверенные
Сообщений: 959
Репутация: 6
Награды: 8
Статус: Offline
| Quote так там же иллюстрации... Хранить в текстовом виде то лучше, и вид эстетичнее можно сделать. Засунуть все картинки с вопросами в ABBYY FineReader, он сохранит всё в текстовые файлы, из которых скопировать не составит труда
|
|
| |
Игорь | Дата: Среда, 13 Октября 2010, 04:30 | Сообщение # 69 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Serg) Хранить в текстовом виде то лучше, и вид эстетичнее можно сделать. Там иллюстрации не только текста. Там еще и иллюстрации тракторов, например, есть.
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Alex3A | Дата: Среда, 13 Октября 2010, 12:23 | Сообщение # 70 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (Игорь) Там иллюстрации не только текста. Там еще и иллюстрации тракторов, например, есть. А что тебя смущает, графику держи во внешних папках, в базе данных храни только путь к ним, сам проект будет в несколько страниц, в принципе можно обойтись и одной, но динамической. В базе данных можно хранить в одной записи не только содержимое страницы но и ее внешний вид. Все зависит от твоей фантазии, средств есть много, в том числе и сетевых, помнится у тебя там локалка имеется, так что можеш раздавать билеты со своего компа, и даже отслеживать динамику процесса.
|
|
| |
Игорь | Дата: Среда, 13 Октября 2010, 12:34 | Сообщение # 71 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Alex3A) А что тебя смущает, графику держи во внешних папках, в базе данных храни только путь к ним, сам проект будет в несколько страниц Так а так оно и есть. Правда, оказывается, это мы чисто для студентов делаем, так сказать для тренировок (копировать каждому билеты дороговато), но если с инспекции заинтересуются, то тогда будем и о сетевой думать. Просто это нужно за эту неделю успеть, поэтому делаю как получилось (а еще иллюстрации нужно по билетам разбить и по папкам разложить - практикантам же это не доверишь). Но там еще несколько подобных намечается - вот тогда буду думать ,как положено сделать. А что с черновым примером? У меня все получается, но не могу пропуск вопроса организовать. Точнее, не пропуск - возврат к пропущенным... все остальное работает...
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
Alex3A | Дата: Среда, 13 Октября 2010, 13:03 | Сообщение # 72 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote (Игорь) А что с черновым примером? У меня все получается, но не могу пропуск вопроса организовать. Точнее, не пропуск - возврат к пропущенным... все остальное работает... Ну так сделай переходы по билетам, номер билета он же индекс массива.
|
|
| |