Рандомизация массива с сгруппированными индексами (т. Е. 0-5 должны быть вместе) - PullRequest
1 голос
/ 04 августа 2011

Я пытаюсь создать приложение с несколькими вариантами экзаменов.У меня есть вопросы, варианты и ответы на каждую проблему в файле .txt, структурированном так:

Question#1
choice A
choice B
choice C
choice D
Answer#1
Question#2
choice A
choice B 
etc. etc.

Цель состоит в том, чтобы создать такой банк вопросов с более чем сотней вопросов.У меня есть массив для чтения всей этой информации.Мне нужно рандомизировать его, но я должен сделать это так, чтобы Вопрос № 1 к ответу № 1 оставался нетронутым (чтобы вопрос 2 с его вариантами ответов и ответами прямо под ним мог стоять первым).Возможно ли это вообще?

Идея состояла в том, чтобы рандомизировать сто вопросов и сказать, что возьмите первые 50 вопросов (с их неповрежденным выбором и ответами) для "практического занятия".

Спасибоочень много.

Вот код:

  if ([typeOfTest isEqualToString:@"SelectedExam"]) {
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"SelectedExam" ofType:@"txt"];

        NSString *SelectedExamBank = [[NSString alloc] initWithContentsOfFile:filePath
                                                  encoding:NSUTF8StringEncoding error:NULL];

        NSString* theBank = SelectedExamBank;


 ...

 NSArray *multipleChoicePractice = [theBank componentsSeparatedByString:@"\n"];

    //Calculating indexes while Question number would be in increments of 6 
    //(question 1 = index 0,  question 2 = index 6, question 3 = index 12 etc)

    choiceAindex = questionNumber + 1;
    choiceBindex = questionNumber + 2;
    choiceCindex = questionNumber + 3;
    choiceDindex = questionNumber + 4;
    theAnswer = [multipleChoicePractice objectAtIndex:answerChecker];

    answerChecker = questionNumber + 5;

...

//q1 is the question and cA ... cD are choices

    q1 = [multipleChoicePractice objectAtIndex:questionNumber];
    cA = [multipleChoicePractice objectAtIndex:choiceAindex];
    cB = [multipleChoicePractice objectAtIndex:choiceBindex];
    cC = [multipleChoicePractice objectAtIndex:choiceCindex];
    cD = [multipleChoicePractice objectAtIndex:choiceDindex];

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

Не видя код, было бы сложно найти решение.Лично я бы предложил создать новый класс Question, содержащий вопрос, выбор и ответ.Затем вы можете просто рандомизировать вопросы в каждом экземпляре класса и хранить массив вопросов.

1 голос
/ 04 августа 2011

Очевидно, что это возможно, но как это сделать, зависит от того, какой язык вы используете и как храните информацию в массиве.

Лично я бы создал массив объектов "QA" (или структур / словарей / ... в зависимости от вашего языка) и просто перемешал его. Поскольку объект QA содержит как вопрос, так и ответы, связь сохраняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...