Страница 1 из 1

vba excel: создать субмассивы или добавить условие с циклом?

Добавлено: 25 янв 2010, 00:49
Yanenok
Есть:
лист "Вопросы" - с таблицей Тема-Вопрос-Сложность. Сложностей всего 3 - простой, сложный, обычный.
лист "Билеты" - в 3 столбце Курс, Дата, Количество вопросов в билете, Количество билетов, в 4 - значения соответственно
Надо:
составить в листе "Билеты" в первом столбце список билетов, распределяя вопросы так, чтобы 1. каждый вопрос был использован один раз, 2. одна тема была использована в билете один раз, 3. билеты были примерно равные по сложности.

Строки, в которых должны быть вопросы, я заполняю циклом для всех билетов; т.к. вопросов в билете n штук, то в цикле действует вложенный цикл, проходящий от 1 до n, собственно, подбирающий вопросы. Первое условие во вложенном цикле - проверка, был ли использован вопрос. С проверкой по сложности, в принципе, все понятно: каждый простой вопрос добавляет к суммарной сложности +1, обычный - +2, сложный - +3; в зависимости от суммы на момент текущего вопроса, добавляется либо простой, либо сложный, либо любой вопрос.
То есть условий достаточно много...

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

Другой вариант - распределить вопросы по субмассивам изначально так, что каждый субмассив - отдельная тема, чтобы затем при подборе вопросов исключать из выбора массивы, элемент которых уже использован. Индексу присваивается значение определенной ячейки. Но первый вопрос выбирается из списка (на листе "Вопросы"), а не из массивов, и его тема определяется как строковое значение. Поэтому чтобы определить, какому индексу соответствует тема, придется все равно выполнять поиск.

Собственно, вопрос:
1. права ли я? :)
2. если все так, то что выгоднее: проще, быстрее, экономичнее?
3. или если есть другой путь (проще, быстрее, экономичнее), то как?

Заранее спасибо всем, кто сможет в этих размышлениях хоть что-то понять!

Re: vba excel: создать субмассивы или добавить условие с циклом?

Добавлено: 25 янв 2010, 06:48
EducatedFool
Для начала прикрепите к сообщению файл с Вашими наработками, и примером того,что должно получиться.
3. билеты были примерно равные по сложности.
Как это "примерно" равны? Сформулируйте более четкие критерии подбора.

Re: vba excel: создать субмассивы или добавить условие с циклом?

Добавлено: 26 янв 2010, 12:41
Yanenok
примерно равны, значит, что <сумма сложностей> = <число вопросов>*<сложность обычного вопроса> +- 1
при распределении вопросов соотвественно, если сумма больше текущего числа вопросов, умноженного на 2, то добавляется сложный вопрос, меньше - простой, равна - любой

собственно, вопрос выбора уже отпал - оказалось, что если подумать головой, то функцию Rnd можно применять не только к списку вопросов, а еще и к номеру элемента массива ><

все равно, спасибо за отклик!