Если задача имеет бесконечно много решений, проверка правильности возлагается на фильм Flash. На сервер передаются лишь данные о том, верно или нет было выполнено задание.
Пример - №517.
Условие задачи:
Используя таблицу простых чисел, найдитеРешение
Для первой части задания в качестве ответа подходят, например, все числа вида 6n+2, 6n+3, 6n+4. Для б) подходят все последовательности вида (6n+1)*5, (6n+1)*5+1, (6n+1)*5-1, (6n+1)*5-2, (6n+1)*5-3.
Программирование
Главная временная шкала Flash-документа содержит один кадр. Вид рабочего поля показан на рисунке 1.Алгоритм:
Значения, введенные в поля a0, a1, a2 (b0 - b5) должны удовлетворять следующим условиям:Для того, чтобы определить, будет ли число составным, достаточно проверить, делится ли оно на какое-либо меньшее натуральное число, отличное от единицы. Соответствующая функция называется isComposite(). В качестве параметра функции выступает рассматриваемое число; она возвращает значение true, если число составное, и false - если оно простое.
Имя функции | Параметры | Предназначение |
Check () | - | Проверка ответа (внешняя функция) |
isComposite(num) | num - исследуемое число | Проверяет, является ли число составным |
areComposite (array) | array - числовой массив | Проверяет, являются ли составными все числа последовательности |
isConsequence (array) | array - числовой массив | Проверяют, являются ли последовательными числа массива (без учёта порядка следования) |
Sorter (a, b) | a, b - числа | Параметр сортировки |
Ниже приводится сценарий, содержащийся в ключевом кадре главной временной шкалы. Он исполняется при загрузке фильма.
stop (); //Остановка воспроизведения
a = new Array(0, 0, 0); //Массив ответов пункта а)
b = new Array(0, 0, 0, 0, 0); // Массив ответов пункта б)
r = new Array(0, 0); //Массив результатов
//Функция полной проверки условия
function Check () {
//Заполнение массивов a и b
for (var i = 0; i<3; i++)
{ a[i] = int(mc1["a"+i.toString()]); }
for (i=0; i<5; i++)
{ b[i] = int(mc1["b"+i.toString()]); }
//Проверка условий "числа последовательные" и "числа составные"
if (areComposite(a) && isConsequence(a))
{ r[0] = 1; }
else
{ r[0] = 0; }
if (areComposite(b) && isConsequence(b))
{ r[1] = 1; }
else
{ r[1] = 0; }
}
//Функция, проверяющая, является ли составным данное число
function isComposite (num) {
var i = 2;
var res = false;
while (i<num) {
if (num%i == 0) {
res = true;
i = num;
} else {
i++;
}
}
return res;
}
//Функция, проверяющая, являются ли составными все числа данного массива
function areComposite (array) {
var res = true;
var i = 0;
while (i<array.length) {
if (!isComposite(array[i])) { //Если элемент массива - не составное число,
res = false; //цикл прерывается
i = array.length;
} else {
i++;
}
}
return res;
}
//Функция, проверяющая, являются ли последовательными числа данного массива
function isConsequence (array) {
array.sort(Sorter); //Сортировка массива по возрастанию
var res = true;
var i = 1;
while (i<array.length) {
if (array[i] != array[i-1]+1) {
res = false;
i = array.length;
} else {
i++;
}
}
return res;
}
//Функция, определяющая параметр сортировки
function Sorter (a, b) {
return a-b;
}
//Однократное выполнение проверки ответа
Check()
Передачу ответа обеспечивает сценарий, содержащийся в экземпляре mc1 видеоклипа all.
onClipEvent (mouseUp) {
_root.Check();
fscommand ("1", _root.r[0]);
fscommand ("2", _root.r[1]);
}
При всяком отпускании кнопки мыши выполняется функция Check(), а затем значение переменных r[0] и r[1] передаётся документу asp.
Просмотреть результат в новом окне
Назад | К содержанию |
Далее |