Objective-C循环逻辑

4
我对Objective-C编程非常陌生,我的背景是图形化编程语言LabVIEW,我也用过一些Visual Basic和HTML/CSS。我正在尝试找出创建下面模式的数据数组的逻辑。稍后我需要使用该模式从另外两个数组中按特定顺序提取数据。
我可以通过引用a = 1,b = 2,c = 3等来完成,并使用a、b、c创建数组,但我想使用循环,以便我不必在数组上方有8个引用。这些引用将用于生成另一代数据,因此,除非我能得到帮助找出逻辑,否则我最终将在数组上方拥有72个引用。
//以下是第一个给出该模式的代码
0 0 0 0 (等等) // 1 1 1 1 // 2 2 2 2
NSMutableArray * expSecondRef_one = [NSMutableArray array];

int a1 = 0;
while (a1 < 9) {
    int a2 = 0;
        while (a2 < 8) {
            NSNumber * a3 = [NSNumber numberWithInt:a1];
            [expSecondRef_one addObject:a3];
            a2++;
        }
    a1++;   
}

// 这是我遇到的第二个问题,我正在寻找解决方案

1 2 3 4 5 6 7 8 //
0 2 3 4 5 6 7 8 //
0 1 3 4 5 6 7 8 //
0 1 2 4 5 6 7 8 // etc to -> // 0 1 2 3 4 5 6 7

如果您在一行中运行它,每9个数字中的一个是-1,但我不知道如何在8个数字的模式下实现这一点。
提前致谢!
Graham

只是一个建议,如果您添加一个纯C版本,然后包括一个“c”标签,您的问题将会得到更多关注。那些C语言的人喜欢他们的算法。 - nevan king
3个回答

2
我想您需要的是这样的东西:
for(int i = 0; i < 9; ++i) {
  for (int j = 0; j < 8; ++j) {
    if (j < i) {
      //Insert j into array
    }
    else {
      //Insert j + 1 into array
    }
  }
}

我省略了将数字插入数组的代码。
我不是完全清楚您如何使用这个数组,但如果这只是一组索引的顺序,以便从另一组数组中访问数据,则可以跳过第一组数组,仅使用此循环稍后访问数据。
--编辑--
如果我正确理解了您的意思,您想要比较包含9个数字的数组中的每个索引与其他索引,然后将结果存储在数组中。如果是这种情况,您可以像这样做:
for (int i = 0; i < 9; ++i) {
  for (j = 0; j < 9; ++j) {
    if (j != i) {
      //Compare object at array index i with object at array index j
    }
  }
}

明天我会试着调整一下,它给出的答案比我之前得到的更接近了,但还不完美。我创建的这些数组用作参考,以便与稍后的数组中的数据进行比较。我需要将0-9空间中的内容与所有其他可能的组合进行比较,如 0 -> (1,2,3 等) 1 -> (0,2,3 等) 2 -> (0,1,2,3 等) 在 Labview 中,我可以创建一个静态数组(更像是 HTML 中的 2D 表格),只显示所有数字,然后使用循环计数引用它们,当我运行操作时。这样能更好地说明我要做什么吗? - Graham
既然你让我想到了,可能有比创建2个数组作为参考更简单的方法,有没有使用循环来比较数组中一个单元格与其他单元格并创建新数据数组的建议?我需要对当前数组中的所有9个单元格进行操作,从而得到新数组中的72个单元格。 - Graham
我修改了我的回答,给你一个循环,我认为对你应该有效。 - Sam Dufel

0

这个循环在我尝试做的事情的元层面上完美地工作。我创建的数组是为了引用原始数组(9个单元格)。有了您制定的算法,我消除了这些内容,并且可以按照我想要的方式准确地引用原始数组。

非常感谢。

干杯

Graham


0
NSMutableArray *a=[[NSMutableArray alloc]init];


    for(int i=0;i<8;i++){

        NSMutableString *s=[[NSMutableString alloc]init];

        for(int j=0;j<8;j++){

            if(i!=j){
                [s appendString:[NSString stringWithFormat:@"%i",j]];
            }

        }

        [a addObject:s];

    }

    NSLog(@"%@",a);  

}

输出:

1234567,
0234567,
0134567,
0124567,
0123567,
0123467,
0123457,
0123456

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接