>TaskText('в одной строке, для каждого элемента отводить 7 экранных позиций.', 0, 5);
>end;
>end;
>StartExam;
>n := 2 * RandomN(1, 5);
>for i := 1 to n do
>a[i] := RandR(-99, 99);
>writeln(f1,n);
>for i := 1 to n - 1 do
>write(f1, a[i]:0:2, ' ');
>writeln(f1, a[n]:0:2);
>for i := 1 to n div 2 do
>case m of
>1: SwapR(a[2*i - 1], a[2*i]);
>2: SwapR(a[i], a[i + n div 2]);
>end;
>for i := 1 to n do
>write(f2, a[i]:7:2);
>writeln(f2);
>EndExam;
>SetTestCount(3);
>end;
Обратите внимание на то, что при вызове процедуры CreateTask ей передается строковый параметр, содержащий имя подгруппы "Преобразование массивов". Это обеспечивает включение новых заданий в подгруппу, с которой связаны ранее импортированные в нашу группу задания ExamBegin71 и ExamBegin72.
Размер исходного массива всегда будет четным и не превосходящим 10; последнее условие необходимо для того, чтобы все исходные данные можно было разместить на одной экранной строке.
В обоих заданиях значения элементов исходного массива можно выбирать произвольным образом из некоторого диапазона. Мы выбрали диапазон от -99 до 99, поскольку в этом случае при отображении чисел с двумя дробными знаками они будут занимать не более 6 экранных позиций.
При записи в файл элементов исходного массива между ними всегда располагается по одному пробелу, поскольку такой порядок организации исходных данных принят во всех заданиях групп ExamBegin и ExamTaskC. Чтобы обеспечить при этом отображение вещественных чисел с двумя дробными знаками, используется специальный набор форматирующих атрибутов: ":0:2". При выводе результатов, согласно формулировке задания, необходимо отводить для каждого элемента массива по 7 экранных позиций и выводить его с двумя дробными знаками (последнее условие принято по умолчанию во всех заданиях групп ExamBegin и ExamTaskC, использующих вещественные данные). Поэтому при выводе применяются другие форматирующие атрибуты: ":7:2".
Так как алгоритм решения обеих задач не содержит ветвлений, для проверки его правильности достаточно небольшого числа тестовых запусков. Мы установили это число равным трем, указав его в качестве параметра процедуры SetTestCount.
Нам осталось включить вызовы процедуры Exam1 (с параметрами, равными 1 и 2) в основную процедуру группы InitTask, связав эти вызовы с номерами заданий. Следует разместить новые задания сразу после импортированных заданий ExamBegin71 и ExamBegin72, так как все эти задания относятся к одной и той же подгруппе "Преобразование массивов". При этом номера последних 12 заданий увеличатся на 2:
>procedure InitTask(num: integer);
>begin
>case num of
>1..2: UseTask('ExamBegin', 70 + num);
>3..4: Exam1(num - 2);
>5..16: UseTask('ExamTaskC', 20 + num);
>end;
>end;
Необходимо также увеличить на 2 пятый параметр процедуры CreateGroup, определяющий общее количество заданий в группе (теперь это количество должно быть равно 16).
Для просмотра новых заданий в окне задачника надо заменить в параметре процедуры Task тестирующей программы символ "#" на "?": Task('ExamDemo?').
При нажатии клавиши [F9] мы увидим на экране окно задачника в демо-режиме, в котором можно выбрать и просмотреть все задания, включенные к настоящему моменту в нашу группу. Приведем вид окна для задания ExamDemo4 (напомним, что это задание инициализируется посредством вызова процедуры Exam1 с параметром, равным 2):