infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: alexandru ionescu din Aprilie 17, 2012, 20:05:03



Titlul: matrice
Scris de: alexandru ionescu din Aprilie 17, 2012, 20:05:03
Am o matrice patratica N*N. Si vreau sa calculez suma de pe diagonala secundara.

Fac 2 for-uri.

for(i=0;i<n;i++)
 for(j=0;j<n;j++)
   if(j=n+1-i)

Daca se poate sa-mi explice cineva ca nu inteleg j=n+1-i ;

Va multumesc.


Titlul: Răspuns: matrice
Scris de: George Marcus din Aprilie 17, 2012, 20:24:20
Poate o intelegi mai bine daca o rescrii sub forma i + j = n + 1. Incearca un exemplu si ai sa vezi ca toate elementele de pe diagonala secundara au suma indicilor n + 1.

Edit: Nu am fost atent la codul tau. Intr-adevar, ce am spus eu e pentru numerotarea de la 1. Daca incepi de la 0 e n - 1.


Titlul: Răspuns: matrice
Scris de: Dumitru Andrei Georgian din Aprilie 17, 2012, 20:33:37
Elementul de pe diagonala secundara de pe prima linie se afla pe coloana n - 1
Elementul de pe diagonala secundara de pe a doua linie se afla pe coloana n - 2
......................
Elementul de pe diagonala secundara de pe ultima linie se afla pe coloana n - n
Acel if verifica ca elementul la care esti sa fie situat pe diagonala secundara.
Deci, daca vrei sa incepi numerotarea liniilor si coloanelor de la 0 e usor de observat ca acel if ar trebui sa fie if(j == n - i - 1).
If-ul pe care l-ai scris tu ar fi bun daca ai incepe numerotarea liniilor si coloanelor de la 1.