a jel se razumjes u dvodimenzionalne i jedno dimenzionalne nizove u paskalu treba mi pomoc oko toga hitno
Recimo da imaš veliki unos. Na primer, unosiš 1000 brojeva i svaki mora da bude upamćen. Iz tog razloga ne praviš 1000 promenljivih, već praviš NIZ sa 1000 elemenata.
Umesto
Kod:
var
a1, a2, a3, a4, a5 : integer;
pišeš
Kod:
var
a : array [1 .. 5] of integer;
Dakle, kada deklarišeš niz u
var klauzi, prvo pišeš ime promenljive, pa dve tačke ( : ), zatim pišeš array i u uglastoj zagradi pišeš koje su "pozicije" elemenata niza. Nakon najmanje pozicije pišeš dve tačke, a potom najveću poziciju. U ovom konkretnom primeru, pozicije su od 1 do 5. Nakon uglaste zagrade pišeš of i tip niza. To može da bude
integer,
real,
string,
char... Tip niza se odnosi na njegove elemente - oni su celi ili realni brojevi ili znakovi...
Takođe, "adresa" ili "pozicija" elementa u nizu može da bude i znak. Tada deklarisanje niza ima ovaj oblik:
Kod:
var
a : array ['A' .. 'Z'] of integer; //mogu da budu i drugi znakovi
Ukoliko nekom elementu niza želiš da daš neku vrednost, tada pišeš:
"Pozicija" na kojoj se nalazi deo niza može da bude i promenljiva. Na primer, ukoliko se niz standardno učitava, neophodno je prvo uneti dužinu niza (neki prirodan broj
n), a zatim koristiti jednu
for petlju:
Kod:
program ucitaj_niz;
var
n, i : integer;
a : array [1 .. 50] of integer;
begin
readln (n);
for i := 1 to n do
readln (a [i]);
end.
Dakle, učitava se vrednost svakog
i-tog elementa, pri čemu je
i u intervalu između 1 i
n. Ovaj program radi pod pretpostavkom da
n nije veće od 50 i da su svi elementi celi brojevi. U zadatku se uvek posebno naglašava koja je gornja granica niza. Ukoliko nije navedena, najverovatnije se koristi bez korišćenja nizova.
Primer: Treba da odrediš koja je "pozicija" (ili "redni broj") elementa čija je razlika sa aritmetičkom sredinom svih članova niza najveća. Prvo se učitava broj elemenata niza
n, a u sledećih
n redova se učitavaju brojevi tog niza. Pretpostavlja se da su brojevi realni i da
n nije veće od 100.
Kod:
program primer1;
var
n, i, poz : integer;
niz : array [1 .. 100] of real;
zbir, sred, max : real;
begin
readln (n);
for i := 1 to n do
begin
readln (niz [i]);
zbir := zbir + niz [i];
end;
sred := zbir / n;
for i := 1 to n do
if abs (sred - niz [i]) > max then
begin
max := abs (sred - niz [i]);
poz := i;
end;
writeln (poz);
end.
Ovo su sve bili jednodimenzionalni nizovi. Dvodimenzionalni nizovi (matrice) su slični. Jedina prava razlika među njima da, dok je element jednodimenzionalnog niza određen jednim parametrom (mislim na broj ili promenljivu unutar uglaste zagrade, poput
a - tu je i taj parametar), dvodimenzionalni nizovi su predstavljeni sa dva parametra - baš kao neka tačka u koordinatnom sistemu ili polje u tabeli.
Davanje vrednosti nekom elementu matrice je prikazanu u donjem primeru - u uglastoj zagradi treba da napišeš dve vrednosti razdvojene zarezom.
Dvodimenzionalni nizovi se rade potpuno isto kao jednodimenzionalni. Na primer, treba da se učitaju svi članovi i da se odredi pozicija elementa matrice čija je razlika sa prosekom svih elemenata najveća. Dimenzije matrice su m i n, pri čemu ti brojevi nisu veći od 20 i elementi matrice su realni brojevi.
Kod:
program primer2;
var
m, n, j, i, pozx, pozy : integer;
matrica : array [1 .. 20, 1 .. 20] of real;
zbir, pros, max : real;
begin
readln (m, n);
for j := 1 to n do
begin
for i := 1 to m - 1 do
begin
read (matrica [i, j]);
zbir := zbir + matrica [i, j];
end;
readln (matrica [m, j]);
zbir := zbir + matrica [m, j];
end;
pros := zbir / (m * n);
for j := 1 to n do
for i := 1 to m do
if abs (pros - matrica [i, j]) > max then
begin
max := abs (pros - matrica [i, j]);
pozx := i;
pozy := j;
end;
writeln (pozx, ', ', pozy);
end.
Nadam se da je ovo bilo od koristi. 