Professional Documents
Culture Documents
Nizovi
Zadatak 0
• Izvesti adresnu funkciju prilikom pristupa matrici
A[1:M,1:N], ukoliko se smeštanje matrice vrši:
– po vrstama (primer jezik C)
– po kolonama (primer jezik Fortran)
po vrstama po kolonama
1 5 9 13 1 5 9 13
2 6 10 14 2 6 10 14
3 7 11 15 3 7 11 15
4 8 12 16 4 8 12 16
adresa a a+1 a+2 a+3 a+4 a+5 a a+1 a+2 a+3 a+4 a+5
1 5 9 13 2 6 ... 1 2 3 4 5 6 ...
Analogno za kolone:
j
– Ai,j = A1,1 + ((j - 1) * M + i - 1) * s
1 2 3 4
Kako bi bilo da indeksi idu od 0?
– Opšti oblik za proizvoljnu donju i gornju granicu 1
1 5 9 13
2
2 6 10 14
3
i 3 7 11 15
4
4 8 12 16
i x x x Broj elemenata
x x u koloni j i 1
pre traženog elementa:
x
GET(A, i, j)
Adresna funkcija: if (i > j) then
Aij = A11 + (j(j-1)/2 + i – 1)*1 return default_element
else
return A [ j(j-1)/2 + i – 1 ]
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 6
Beograd
Zadatak 3
Usvojiti efikasnu implementaciju kvadratne matrice realnih
brojeva za koju se zna da je simetrična u odnosu na glavnu
dijagonalu, a zatim napisati kompletne potprograme (na
jeziku C ili C++) za efikasno čitanje proizvoljnog elementa,
upisivanje proizvoljne vrednosti elementa i određivanje broja
nenultih elemenata matrice. Obavezno komentarisati
program.
Matrica simetrična u odnosu na glavnu
1 1 3 8 9 dijagonalu:
1 4 6 7 5 – Dovoljno je pamtiti jednu trougaonu matricu
3 6 5 2 3 Program za C/C++:
8 7 2 1 2 – Matrica se smešta po vrstama
9 5 3 2 8 – Indeksi počinju od 0
– Potreban samo pomeraj, ne apsolutna adresa
Elektrotehnički fakultet, 7
Beograd
Zadatak 3 - rešenje j
a32 a33 a34 a11 a12 a21 a22 a23 a32 a33 ...
0 1 2 3 4 5 6 ...
0 0 0 0 0 0
0
0 0 0 0 0 0
4
0 0 5 0 11 0
0
X
0 0 0
0 0 0 0
9 0 8 10 0 0
0
0 0 15 0 0 0 0
0 0 0 0 0 0 0 R C V
0 0 4 0 0 0 0 1 1 1 3 4
2 1 2 4 5
0 0 0 5 0 11 0 3 2 3 6 11
X 4 4 4 1 9
0 0 0 0 0 0 0 5 4 5 4 8
9 0 0 8 10 0 0 6 7 6 5 10
8 7 3 15 17
0 0 15 0 0 0 0
Zadatak 6 - rešenje b) – kao u knjizi
Potrebno je formirati 3 nezavisna vektora
– Vektor V sadrži vrednosti i ima onoliko elemenata koliko ima
nenultih elemenata matrice
– Vektor C sadrži broj kolone odgovarajućeg elementa vektora V
– Vektor R sadrži indeks prvog elementa vektora C koji odgovara
datom elementu vektora R i ima onoliko elemenata koliko i vrsta
matrice
0 0 0 0 00 0 R C V
0 0 4 0 0 0 0
1 0 1 3 4
2 1 2 4 5
0 0 0 5 0 11 0 3 2 3 6 11
X 4 0 4 1 9
0 0 0 0 0 0 0 5 4 5 4 8
9 0 0 8 10 0 0 6 7 6 5 10
7 3 15
0 0 15 0 0 0 0
Elektrotehnički fakultet, Algoritmi i Strukture Podataka 18
Beograd
Zadatak 7 – za samostalnu vežbu
Podatke dužine 3, 4 i 5 bita potrebno je smestiti u nizove
A, B i C, respektivno.
Podaci se smeštaju pakovanjem više podataka u jednu
memorijsku reč. Na datom računaru memorijske reči mogu
biti dužine 8, 16 i 32 bita. Za svaki od navedenih vektora
potrebno je odabrati jednu od ponuđenih dužina
memorijske reči tako da iskorišćenje prostora bude što je
moguće veće. Nacrtati sliku koja prikazuje raspored
podataka po memorijskim rečima za izabranu dužinu
memorijske reči.
sadržaj
adresa 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
x x
x x x
x x x x
x x x x x
Adresna funkcija
– Ai,j=A1,1+(i–1)∙2+(j–1) mod 2
– Obratiti pažnju na upotrebu mod operatora
Funkcija za dohvatanje elementa
– Obratiti pažnju na uslov za nenulti element
GET(M, i, j)
if (i-1) mod N/2 = (j-1) div 2 then nenulti_element
A B 0 0 0 0
0 0 C D 0 0
0 0 0 0 E F
G H 0 0 0 0
0 0 I J 0 0