Out of scope - jak obejść?

0

Znów dopadł mnie outofscopizm.

W dużym uproszczeniu:

for (int x = 0; x <= N; x++) {
    for (int y = 0; y <= N; y++) {
        if (arr[x][y] == true) {
            int i = x;
            int j = y;
            break;
        }
    }
}

// tu chcę skorzytać z i oraz j oraz zmieniać ich wartość (out of scope)
     // jakieś instrukcje operujące na i oraz j

// a tutaj chciałbym ustawić i oraz j z powrotem na x i y 
     i = x;
     j = y;
     // to też nie działa - znów out of scope

Da się to wyleczyć, żeby nie było out of scope, czy po prostu jeśli jest out of scope to z góry jest zły design i trzeba inaczej kombinować?

1

Może napisz co chcesz osiągnąć, bo we wstawce kodu definiujesz nowe zmienne wewnątrz pętli i nic z nimi nie robisz.

3
int x, y;

for (x = 0; x < N; x++)
  for (y = 0; y < N; y++)
    if (arr[x][y])
      break;
    
// w tym miejscu zmienne "x" i "y" zawierają ustawione wartości
0

Mam tablicę bool wypełnioną wartościami false:

bool arr[N][N] = {};

Jednakże niektóre elementy mają wartość true:

arr[0][2] = true;
arr[1][5] = true;
arr[2][1] = true;
arr[3][6] = true;

Zakładając, że tablica ma taką konstrukcję:

arr[ lewy indeks ][ prawy indeks ];

To chciałbym przydzielić do zmiennych int i, j z tej tablicy tylko te pary indeksów, które razem w tablicy dają wartość true. i odpowiada za lewy indeks, a j za prawy. Najpierw więc i = 0; j = 2;.
Następnie chciałbym te zmienne i, j modyfikować, robić coś na nich, a później znów ustawić na wartość początkową i = 0; j = 2;.

Gdy już skończę cały cykl z:

arr[0][2] = true;
// czyli
i = 0; j = 2;
// instrukcje zmieniające ich wartość
// ustawienie i oraz j z powrotem na i = 0; i = 2;
// znów instrukcje zmieniające ich wartość
// ...

to chciałbym przejść do następnego elementu tablicy arr który daje true, czyli:

arr[1][5]

i analogicznie ustawić i na 1, j na 5 i robić coś na tych zmiennych. Później przejść do następnego elementu tablicy będącego true, i tak w kółko aż przejdę przez całą tablicę.

Tak naprawdę cały problem sprowadza się do tego w jaki sposób ustalić czy dany element tablicy jest true, a następnie przydzielić do i oraz j odpowiadające danemu elementowi wartości indeksów.

4

Dlaczego nie napiszesz funkcji, która obsłuży znalezione pola?

for (int x = 0; x <= N; x++) {
    for (int y = 0; y <= N; y++) {
        if (arr[x][y]) {
            do_stuff(x, y);
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1