Форум
Написать нам
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: as-master  
Форум MMB » Всё о программе Multimedia Builder » Общие вопросы по MMB » Массивы (Не догоняю)
Массивы
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$. Но только предварительно она должна быть числовой. Вот так:

Code
bilet=1

Получим: 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)
---------------------------------------------
управляется с клавиатуры - при первом нажатии на клавишу выбора, номер ответа отображается в окошке, если уверен - подтвердить повторным нажатием. (таковы условия задачи)

Прикрепления: 1175590.zip (403.9 Kb)


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
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 (Игорь)
А что с черновым примером? У меня все получается, но не могу пропуск вопроса организовать. Точнее, не пропуск - возврат к пропущенным... все остальное работает...

Ну так сделай переходы по билетам, номер билета он же индекс массива.
 
Форум MMB » Всё о программе Multimedia Builder » Общие вопросы по MMB » Массивы (Не догоняю)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: