Zadatak :
Kreirati matricu A od brojeva upisanih po spirali, počev od gornjeg-levog, pa do centralnog elementa.

Drugim rečima, ono što treba da se dobije je sledeća matrica:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Ovaj problem se razbija na popunjavanje prsten-po-prsten. Kao što vidimo, krenućemo od spoljnih ivica i popunjavaćemo zasebno sva četiri smera.
----
Analiza
Primer matrice, date su kooordinate jer sadržaj nije bitan, koordinate počinju od 0 jer je tako u nizovima u skoro svim programskim jezicima.
Kod:
| (0,0)  (0,1)  (0,2)  (0,3)  (0,4) |
|				    |
| (1,0)  (1,1)  (1,2)  (1,3)  (1,4) |
|				    |
| (2,0)  (2,1)  (2,2)  (2,3)  (2,4) |
|				    |
| (3,0)  (3,1)  (3,2)  (3,3)  (3,4) |
|				    |
| (4,0)  (4,1)  (4,2)  (4,3)  (4,4) |
Spiralno obilaženje (krug po krug)
(0,0)->(0,1)->(0,2)->(0,3)->(0,4)->
(1,4)->(2,4)->(3,4)->(4,4)->
(4,3)->(4,2)->(4,1)->(4,0)->
(3,0)->(2,0)->(1,0)->

(1,1)->(1,2)->(1,3)->
(2,3)->(3,3)->
(3,2)->(3,1)->
(2,1)->

(2,2)

U opštem slučaju, ako je širina matrice m, a visina n, obilazi se ovako

prvi krug
od (0,0) do (0,m-1)
od (1,m-1) do (n-1,m-1)
od (n-1,m-2) do (n-1,0)
od (n-2,0) do (1,0)

drugi krug
od (1,1) do (1,m-2)
od (2,m-2) do (n-2,m-2)
od (n-2,m-3) do (n-2,1)
od (n-3,1) do (2,1)

i tako dalje
---------------------------------------------------------------------------------------------
Način na koji smo to uradili na času:
Funkcija za upisivanje elemenata matrice spiralno, gde se u funkciji koristi matrica od maksimum 20 kolona, ima m redova i n kolona:

slika funkcije koju smo koristili na času

C fajl u kojem je primenjena ova funkcija za kreiranje matrice: Fajl1.c
---------------------------------------------------------------------------------------------
Korektniji način izvedbe, je dat u nastavku (kako bi bilo ispravnije raditi, mada je ista ideja za rešavanje problema):
slika funkcije koju smo koristili na času
slika funkcije koju smo koristili na času

C fajl u kojem se to izvodi: Fajl2.c
---------------------------------------------------------------------------------------------
Zadatak 2:
Kreirati kvadratnu matricu u koju se elementi upisuju spiralno, od 1 pa naviše, u smeru kazaljke na satu. (REŠENJE-na složeniji način)

Last modified: Tuesday, 26 February 2019, 10:57 PM