随机化具有分组索引的数组(即0-5应该在一起)

时间:2011-08-04 17:13:37

标签: iphone objective-c arrays testing

我正在尝试创建一个多选择考试类型的应用程序。我有一个.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 个答案:

答案 0 :(得分:3)

如果没有看到代码,就很难找到解决方案。就个人而言,我建议创建一个新的问题类,其中包含问题,选择和答案。然后,您可以简单地在每个类的实例中随机化问题,并保留一系列问题。

答案 1 :(得分:1)

这显然是可能的,但如何做到这取决于您使用的语言以及如何将信息存储在数组中。

我个人会创建一个“QA”对象数组(或结构/词典/ ...取决于您的语言)并简单地将其洗牌。因为QA对象包含问题和答案,所以保持关联。