- Член од
- 6 јуни 2009
- Мислења
- 3.094
- Поени од реакции
- 445
Финтава е ефикасно решение. Во твојот код за главна дијагонала се добива линеарно изминување ама имаш два фора, два услови и две променливи (плус променливите за големината на матрицата кои се задолжителни). Тоа е многу поефикасно од квадратно изминување со проверка i==j, ама уште поефикасно е со еден фор, еден услов и една променлива.Чудно ви е дека бројачот се апдејтира во индексите на матрицата? Па добро една задача има милион начини како да се реши. На тој начин можеш многу манипулации да направиш во матрицата.
Еве на пример направив и збирот на споредната дијагонала, друг начин за споредната дијагонала бар сега во моментот не ми текнува.
Код:total=0; for (i=n-1;i>=0;) for (j=0;j<m;) { total=total+matrica[i--][j++]; }
За споредна дијагонала најефикасно би било решение со еден фор, еден услов и две променливи. А можи да се реши и со една променлива.
Код:
for (int i=0, j=n-1; i<n; i++, j--)
{
...
matrica[i][j]
}
Код:
for (int i=0; i<n; i++)
{
...
matrica[i][n-i-1]
}