Lógica de bucle Objective-C

Soy realmente nuevo en la programación en Objective-C, mi experiencia es en labview, que es un lenguaje de programación gráfico, he trabajado con Visual Basic algo y HTML / CSS también bastante. Estoy tratando de averiguar la lógica para crear una matriz de datos para el patrón a continuación. Necesito el patrón más tarde para extraer datos de otras 2 matrices en un orden específico.

Puedo hacerlo haciendo referencia a a = 1, b = 2, c = 3, etc. y luego creando la matriz con a, b, c, pero quiero usar un bucle para no tener 8 referencias encima de la matriz. Estas referencias se usarán para generar otra generación de datos, por lo que, a menos que pueda obtener ayuda para averiguar la lógica, terminaré con 72 referencias por encima de la matriz.

// Este es el primero que da el patrón

0 0 0 0 (etc.) // 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++;   
}

// Este es el segundo con el que me tropiezo, estoy buscando el patrón

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

Si lo ejecuta en una línea, cada noveno número es -9, pero no sé cómo hacerlo con un patrón de 1.

Gracias de antemano!

Graham

preguntado el 09 de enero de 11 a las 04:01

Solo una sugerencia, pero si agrega una versión c pura, luego incluye una etiqueta "c", obtendrá más atención para su pregunta. A esos chicos de C les encantan sus algoritmos. -

3 Respuestas

Creo que estás buscando algo como:

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
    }
  }
}

Dejé el código para insertar los números en la matriz.

No tengo muy claro cómo está usando esta matriz, pero si esto es solo un orden de índices para acceder a los datos de otro grupo de matrices, es posible que pueda omitir el primer conjunto de matrices y simplemente usar este ciclo para acceder a sus datos más tarde.

--edit--

Si lo entiendo correctamente, desea comparar cada índice en una matriz de 9 números con cada otro índice, luego almacenar los resultados en una matriz. Si ese es el caso, podría hacer algo como esto:

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
    }
  }
}

Respondido el 09 de enero de 11 a las 22:01

Jugaré con eso mañana. Me está dando respuestas más cercanas de lo que estaba obteniendo, pero aún no es perfecto. Estas matrices que estoy creando se utilizan como referencia para comparar datos de una matriz posterior. Necesito comparar lo que tengo en los espacios 0-9 con cualquier otra combinación posible 0 -> (1,2,3 etc) 1 -> (0,2,3, etc) 2 -> (0,1,2,3, 2, etc.) En Labview puedo crear una matriz estática (más como una tabla XNUMXD en HTML) que solo muestra todos los números y luego usar un recuento de bucles para hacer referencia a ellos mientras ejecuto la operación. ¿Eso da un mejor ejemplo de lo que estoy tratando de hacer? - Graham

Ahora que me ha hecho pensar en ello, probablemente haya una manera más fácil de hacerlo que creando 2 matrices como referencia, cualquier sugerencia para usar bucles como una forma de comparar una celda en una matriz con las demás y crear una nueva. matriz de esos datos? Necesitaría hacerlo para las 9 celdas de la matriz actual, lo que me da 72 celdas en la nueva matriz. Graham

Edité mi respuesta para darte un bucle que creo que debería funcionar para ti. - Sam Dufel

Ese bucle funciona perfectamente en un nivel meta para lo que estaba tratando de hacer. La matriz que estaba creando era para hacer referencia a la matriz original (9 celdas) Con el algoritmo que hizo, las eliminé y puedo hacer referencia a la matriz original exactamente como quería.

Muchas gracias.

¡Salud

Graham

Respondido el 10 de enero de 11 a las 03:01

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);  

}

salida:

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

Respondido 08 ago 11, 08:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.