Deci, dacă considerăm matricea sursă mat[3][3] și vectorul destinație v[3*3] atunci vom vrea ca :
v[0] = mat[0][0];
v[1] = mat[0][1];
v[2] = mat[0][2];
v[3] = mat[1][0];
v[4] = mat[1][1];
v[5] = mat[1][2];
v[6] = mat[2][0];
v[7] = mat[2][1];
v[8] = mat[2][2];
Din asta, putem observa că dacă v[i] = mat[y][x] atunci, pentru ceea ce vrem noi, i = y * dimensiune(mat) + x; Asta fiind valabil doar dacă matricea "mat" este pătratică. Dacă este așa atunci se poate face verificarea :
v[0 * 3 + 0 = 0] = mat[0][0];
v[0 * 3 + 1 = 1] = mat[0][1];
v[0 * 3 + 2 = 2] = mat[0][2];
v[1 * 3 + 0 = 3] = mat[1][0];
v[1 * 3 + 1 = 4] = mat[1][1];
v[1 * 3 + 2 = 5] = mat[1][2];
v[2 * 3 + 0 = 6] = mat[2][0];
v[2 * 3 + 1 = 7] = mat[2][1];
v[2 * 3 + 2 = 8] = mat[2][2];
ceea ce ne dă același rezultat.
O variantă mai intuitivă și mai ușor de urmărit ar fi cea propusă de
Cosmin, deși ea necesită un consum mai mare de memorie prin prezența variabilei k. Am să te rog să parcurgi explicația mea, să te gândești la ea și, eventual, să scrii o bucățică de cod pentru a mai învăța câte ceva.
Spor
"Rațiunea vine în umbre scurte numite suferințe."
Victor Adăscăliței"
Bender: Anything less than immortality is a complete waste of time.
Zoidberg: Then suicide it is! Step into my office ..."
Futurama S06E06