Problemă rezolvată matrice clasa a XI-a mate-info neintensiv

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 nr, n, i, j, x, b[20];
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

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