6.1.Описание глобальных переменных:
int current_question
Описание: используется в функциях как текущий вопрос.
int *rand_q
Описание: указатель на динамический массив перемешанных вариантов ответов.
int count
Описание: число вопросов в тесте
int *questions,
Описание: указатель на динамический массив порядковых номеров вопросов в тесте.
int count_of_string;
Описание: количество строк в тестовом файле.
TList *List
Описание: динамический массив указателей на структуру Rec
typedef struct
{
TLabel *Label; — стандартная надпись
TCheckBox *Check; — индикатор с флажком
} Rec;
Описание: структура Rec используется для объединения варианта ответа с соответствующим ему флажком выбора.
Абсолютно все массивы создаются динамически для экономии системных ресурсов и универсальности программы, это:
1) массив для списка вопросов TListBox
2) список указателей типа TList, который содержит переменные структуры Rec.
Последний список предназначен для динамического списка ответов отдельно взятого вопроса.
6.2. Описание внутренних переменных:
6.2.1. В функции открытия файла:
FILE *norm, *shifr;
Описание: указатель на файл добавляемого пользователем теста для его шифрования; указатель на зашифрованный файл для его открытия и расшишровки.
6.2.2. В функции void proverka( ):
AnsiString user_ans;
Описание: строка создания списка ответов, выбранных пользователем в процессе ответа на вопрос.
int n
Описание: указывает на порядковый номер символа в строке user_ans.
AnsiString correct_ans
Описание: правильный ответ на вопрос.
int k=1;
Описание: для определения порядкового номера строки ответа в списке всех строк теста для текущего вопроса.
6.2.3. В функции output_q( );
List=new TList;
Описание: для создания списка вариантов ответа текущего вопроса.
Rec *otvet;
Описание: содержит новый вариант ответа и указатель с флажком на него, используется для добавления в список List.
int Height=10;
Описание: начальная высота надписи первого вопроса.
int *posl
Описание: для определения последнего варианта ответа.
6.3 Описание функций
int number_of_variants( int);
Описание:
Получает порядковый номер вопроса в тесте.
Возвращает количество вариантов ответов.
void DelQuestions(void);
Описание:
Удаляет из памяти динамически выделенные переменные структуры Rec.
void output_q();
Описание: следит за окончанием вопросов в тесте, выводит вопрос на экран, создает список вариантов ответов и выводит их случайным образом. Когда вопросы закончились выводит вызывает результат теста, StaticTestMe.
void proverka();
Описание: проверяет ответов пользователя с правильным ответом и выводит результат в статусную строку, а также в переменную correct_answers.
int variants_ans( int, int);
Описание:
Получает текущий порядковый номер варианта ответа и текущий номер варианта вопроса. Проверяет: является ли следующая строка концом списка строк, либо пустой строкой, разграничивающей вопросы. Возвращает 1 если это ещё вариант ответа, 0 – обратное.
void rand_func( int, int *)
Получает число элементов из которого будет состоять массив и указатель на динамический массив.
Создает массив случайно распределенных чисел в диапозоне от 0 до числа, получаемого через первый параметр. Используется для формирования массивов чисел, составленных из порядковых номеров вывода вопросов и ответов.
