Se consideră o matrice a cu n linii * n coloane și un vector v cu n elemente. Precizați care vor fi elementele vectorului b, după execuția secvenței următoare:
int a[3][3] = {{7, 1, 7}, {-7, 7, 0}, {2, 4, 11}};
n = 3;
x = 7;
for (i = 0; i < n; i++)
{
nr = 0;
for (j = 0; j < n; j++)
if (a[i][j] == x)
nr++;
b[i] = nr;
}
Vizual
Explicație și rezolvare
a:
7 1 7
-7 7 0
2 4 11
x = 7 și se execută (pseudocod):
for i de la 0 la 3 - 1 = 2:
nr = 0
for j = 0 la 2
dacă a[i, j] == x, ++nr
b[i] = nr
nr = 0
for j = 0 la 2
dacă a[i, j] == x, ++nr
b[i] = nr
Dezvoltarea for-urilor
n = 3
i = 0
nr = 0
for j = 0 la 2
dacă a[0, 0] == x, ++nr | a[0, 0] == 7, 7 == x, ++nr, nr = 1
dacă a[0, 1] == x, ++nr | a[0, 1] == 1, 1 != x, nr rămâne 1
dacă a[0, 2] == x, ++nr | a[0, 2] == 7, 7 == x, ++nr, nr = 2
b[0] = nr (= 2)
i = 0
nr = 0
for j = 0 la 2
dacă a[0, 0] == x, ++nr | a[0, 0] == 7, 7 == x, ++nr, nr = 1
dacă a[0, 1] == x, ++nr | a[0, 1] == 1, 1 != x, nr rămâne 1
dacă a[0, 2] == x, ++nr | a[0, 2] == 7, 7 == x, ++nr, nr = 2
b[0] = nr (= 2)
i = 1
nr = 0
for j = 0 la 2
dacă a[1, 0] == x, ++nr | a[1, 0] == -7, -7 != x, nr rămâne 0
dacă a[1, 1] == x, ++nr | a[1, 1] == 7, 7 == x, ++nr, nr = 1
dacă a[1, 2] == x, ++nr | a[1, 2] == 0, 0 != x, nr rămâne 1
b[1] = nr (= 1)
i = 2
nr = 0
for j = 0 la 2
dacă a[2, 0] == x, ++nr | a[2, 0] == 2, 2 != x, nr rămâne 0
dacă a[2, 1] == x, ++nr | a[2, 1] == 4, 4 != x, nr rămâne 0
dacă a[2, 2] == x, ++nr | a[2, 2] == 11, 11 != x, nr rămâne 0
b[2] = nr (= 0)
La final b = (2, 1, 0).
Niciun comentariu:
Trimiteți un comentariu