Выбор структур данных.


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 до числа, получаемого через первый параметр. Используется для формирования массивов чисел, составленных из порядковых номеров вывода вопросов и ответов.

Загрузка...