You are on page 1of 20

Структурирани податоци

Прости типови или неструктурирани типови податоци се: природните, целобројните, знаковни,
логички, интервални и реални.
Постојат и структурирани типови податоци кои се составени од прости (неструктурирани )
типови кои се дефинирани според типот на своите компоненти и начинот на пристап до
нивните компоненти. Структурирани типови податоци се: низа битови, низа знаци, општа низа,
множество, стек, ред и датотека.

08/15/2022 GOCE GJORGJIEVSKI 1


Податоци од тип општа низа

Голем број истородни податоци можат да се организираат во посебни структури наречени низи
(array). Ако елементите на низата се од било кој прост тип ги викаме општа низа. Елементите во
општа низа мора да се од ист тип. Секој елемент од низата има свој реден број.
Низатата Ocena1, Ocena2, …, Ocenan каде имињата на елементите се разликуваат само по
единствениот индекс, односно општата низа која има еден индекс, една димензија се нарекува
еднодимензионална општа низа или едноиндексна општа низа

08/15/2022 GOCE GJORGJIEVSKI 2


Податоци од типот еднодимензионална општа низа
Променливите што добиваат вредности на податоци од типот еднодимензионална општа низа се
нарекуваат променливи од тип еднодимензионална општа низа или еднодимензионален тип
променливи или според индексот едноиндексни променливи.
Во Pascal се запишуваат така што индексот се става во средни загради: Ocena[1], Ocena[2], …,
Ocena[n]. Се работи за различни променливи кои се разликуваат по индексот.

Еднодимензионалните променливи се декларираат:


VAR Име: ARRAY[ПочетенИндекс..КраенИндекс] OF тип;

Име е заедничкото име на индексните променливи, ARRAY означува низа, по резервираниот збор OF
се наведува типот на индексните променливи.

VAR Ocena: ARRAY[1..100] OF integer;

Низата Ocena има 100 елементи, променливи со индекси од интервалот [1..100]. Општиот член на
низата се запишува Ocena[I] каде Iε{1..100}.

Индексите мораат да бидат од линеарно подреден тип.


08/15/2022 GOCE GJORGJIEVSKI 3
Примери за едноиндексни низи:

VAR A:ARRAY[-5..5] OF integer;


B:ARRAY[-10..-1] OF real;
C:ARRAY[3..11] OF 1..12;
bukva=’A’..’Z’;
D:ARRAY[bukva] OF integer;

Низата А има 11 елементи и тоа А[-5], A[-4], …, A[5] кои можат да примаат само целобројни вредности.
Пр. А[-4]=7, A[3]=246, A[0]=-999 итн.

Низата B има 10 елементи и тоа: B[-10], B[-9], B[-8], …B[-1] кои можат да примат само реални вредности.
Пр. B[-8]=56.893, B[-3]=-0.025 итн.

Низата C е од интервален тип, чии елементи примаат вредности од интервалот 1..12, а индексот може да биде од 3 до 11.
Пр. C[5]=12, C[10]=3 итн.

Елементите од низата D можат да имаат вредности од цели броеви, а нивните индекси се големите букви од
абецедата.
Пр. D[‘Q’]=100, D[‘K’]=6478, D[‘W’]=-33.

08/15/2022 GOCE GJORGJIEVSKI 4


E:ARRAY[‘a’..’z’] OF 1..5;
F:ARRAY[1..5] OF ‘a’..’z’;
G:ARRAY[boolean] OF Boolean;

Во низата E елементите можат да добиваат вредности од 1, 2, 3, 4 или 5, а нивните


индекси можат да бидат буквите ‘a’, ‘b’, ‘c’, …, ‘z’.
Пр. E[‘a’]=1, E[‘j’]=5.

Низата F има само 5 елементи кои можат да добиваат вредност од која било константа
од буквите ‘a’, ‘b’, …, ‘z’.
Пр. F[4]=’a’, F[1]=’z’.

Низата G има два елемента: G[true] и G[false] кои можат да добиваат вредности true и
false.
Пр. G[true]=true, G[false]=true.

08/15/2022 GOCE GJORGJIEVSKI 5


Декларацијата на повеќе низи од ист тип со ист број елементи е:

VAR листапроменливи: ARRAY[ПочетенИндекс..КраенИндекс] OF тип;

VAR Ocena,BrojVoDnevnik: ARRAY[1..40] OF byte;


Znaci,Bukvi,Site: ARRAY[1..256] OF char;
DecBroj,RealenBroj: ARRAY[1..10] OF real;

08/15/2022 GOCE GJORGJIEVSKI 6


Пристап до елементите на еднодимензионалната општа низа
Пристапот до секој елемент се врши по индексот на елементот.
Општата форма е:

Именаедноиндекснапроменлива[индекс]

Пример:
A[3] деветтиот елемент од низата A
B[-9] вториот елемент од низата B
C[5] третиот елемент од низата C
D[‘L’] 12-от елемент од низата D
E[‘j’] 10-от елемент од низата E
F[4] 4-от елемент од низата F
G[true] 2-от елемент од низата G

08/15/2022 GOCE GJORGJIEVSKI 7


Читање и печатење елементи од еднодимензионална низа
 
Бидејќи индексите на елементите се од линеарно подреден тип, читањето и печaтењето на
елементите на еднодимензионалната општа низа се врши со некоја од структурите за
повторување.

FOR I:=1 TO N DO
BEGIN
Write(‘A[‘,I,’]=’);
ReadLn(A[I]);
END;
 

FOR Bukva:=’A’ TO ‘Z’ DO


WriteLn(D[Bukva]);
 

FOR I:=-5 TO 5 DO
ReadLn(A[I]);
08/15/2022 GOCE GJORGJIEVSKI 8
Пр. Програма која на секој елемент од низата A[I] ќе му го смени знакот од + во – и обратно.

PROGRAM PromenaZnaci;
VAR A:ARRAY[1..100] OF integer;
N,I:integer;
BEGIN
Write(‘Vnesi go brojot na elementi vo nizata N= ‘);
ReadLn(N);
FOR I:=1 TO N DO
BEGIN
Write(‘A[‘,I,’]=’);
ReadLn(A[I]);
END;
FOR I:=1 TO N DO
A[I]:=-A[I];
WriteLn(‘Nizata so promeneti znaci na elementite e: ‘);
FOR I:=1 TO N DO
Write(A[I]:5);
END.

08/15/2022 GOCE GJORGJIEVSKI 9


Пр. Програма за наоѓање на најголем елемент во бројната низа

PROGRAM NajgolemElementVoNiza;
VAR I,N,Max,Index:integer;
A:ARRAY[1..100] OF integer;
BEGIN
Write(‘Vnesete go brojot na elementite vo nizata n= ‘);
ReadLn(N);
WriteLn(‘Vnesete gi elementite na nizata’);
FOR I:=1 TO N DO
BEGIN
Write(‘A[‘,I,’]=’);
ReadLn(A[I]);
END;
Max:=A[1];
Index:=1;
FOR I:=2 TO N DO
IF A[I]>Max THEN
BEGIN
Max:=A[I];
Index:=I;
END:
WriteLn(‘Najgolema vrednost ‘,Max:7,’ ima elementot so reden broj ‘,Index);
END. 08/15/2022 GOCE GJORGJIEVSKI 10
Задачи:

 Напишете програма која внесува n, а потоа низа од n елементи. Програмата треба


да ја испишува низата во обратен редослед и да се испечети сумата на елементите
на низата.

 Напишете програма која ќе внесува низа од n броеви (a1, a2, …, an). Програмата треба
да пресмета S=| a1|+| a2|+…+| an|

 Напишете програма која внесува n, а потоа низа од n елементи. Програмата треба


да го испише најголемиот и најмалиот елемент на таа низа.

 Напишете програма која внесува низа од n природни броеви и природен број a.


Програмата испишува нова низа составена од елементи на влезната низа помали
од a.
 В читајте ги висините на 19 ученици, пресметајте ја нивната просечна висина и
испечатете ги висините поголеми од просечната.

 Напишете програма која внесува низа од n елементи. Елементот со индекс a го


заменува со елемент со индекс b. (a<b), (a, b<=n). Употребете помошна променлива
pom.

 Напишете програма која внесува низа од n елементи. Потоа сортирајте ја низата


од помал кон поголем елемент.
08/15/2022 GOCE GJORGJIEVSKI 11
1.
program niza1;
var i,s,n:integer;
a:array[1..100] of integer;
begin
Write('Vnesi go brojot na elementi na nizata!');
readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
s:=0;
writeln('Vnesenata niza vo obraten redosled e: ');
for i:=n downto 1 do
begin
inc(s,a[i]);
write(a[i],’ ‘);
end;
writeln;
writeln(‘Sumata e: ‘,s);
end.
08/15/2022 GOCE GJORGJIEVSKI 12
2.
program niza1;
var i,n,s:integer;
a:array[1..100] of integer;
begin
Write('Vnesi go brojot na elementi na nizata!');
readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
s:=0;
for i:=1 to n do
inc(s,abs(a[i]));
writeln('Sumata e: ',s);
end.

08/15/2022 GOCE GJORGJIEVSKI 13


3.
program niza1;
var i,max,min,n:integer;
a:array[1..100] of integer;
begin
Write('Vnesi go brojot na elementi na nizata!');
readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
max:=a[1];
min:=a[1];
for i:=2 to n do
begin
if a[i]>max then
max:=a[i];
if a[i]<min then
min:=a[i];
end;
writeln('Najgolemiot element e ',max,', a najmaliot
e ',min);
end. 08/15/2022 GOCE GJORGJIEVSKI 14
4.
program niza1;
var i,j,n,aa:integer;
a,b:array[1..100] of integer;
begin
Write('Vnesi go brojot na elementi na nizata!');
readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
write('Vnesi go brojot aa!');
readln(aa);
j:=1;
for i:=1 to n do
begin
if a[i]<aa then
begin
b[j]:=a[i];
inc(j);
end;
end;
writeln('Dobienata niza e: ');
for i:=1 to j-1 do
write(b[i],‘ ');
end.

08/15/2022 GOCE GJORGJIEVSKI 15


5.
program visina;
var v:array[1..19] of real;
sumv,prov:real;
i:1..19;
begin
sumv:=0;
writeln('Vnesete gi visinite na ucenicite! ');
for i:=1 to 19 do
begin
write('Visinata na ',i,'-ot ucenik e v[',i,']= ');
readln(v[i]);
sumv:=sumv+v[i];
end;
prov:=sumv/19;
writeln('Prosecnata visina e ',prov:5:3);
for i:=1 to 19 do
if v[i]>prov then
writeln(i,'-ot ucenik ima visina ','v[',i,']=
',v[i]:4:2);
end.

08/15/2022 GOCE GJORGJIEVSKI 16


08/15/2022 GOCE GJORGJIEVSKI 17
08/15/2022 GOCE GJORGJIEVSKI 18
6.
program zamenielement_niza;
var i,n,a,b,pom:integer;
niza:array[1..100] of integer;
begin
write('Vnesi n!');
readln(n);
for i:=1 to n do
begin
write('niza[',i,']= ');
readln(niza[i]);
end;
write('Vnesi go a. ');
readln(a);
write('Vnesi go b. ');
readln(b);
pom:=niza[a];
niza[a]:=niza[b];
niza[b]:=pom;
for i:=1 to n do
writeln('niza[',i,']= ',niza[i]);
end.

08/15/2022 GOCE GJORGJIEVSKI 19


7.
program sortiranje;
var i,n,j,pom:integer;
a:array[1..100] of integer;
begin
Write('Vnesete go n. ');
readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
pom:=a[i];
a[i]:=a[j];
a[j]:=pom;
end;
writeln('Sortiranata niza e: ');
for i:=1 to n do
writeln('a[',i,']= ',a[i]);
08/15/2022
end. GOCE GJORGJIEVSKI 20

You might also like