DATU STRUKTŪRAS 2. lekcija. Piemēri.
Piemērs Program pointeri; Var p,q:^integer; Begin {1} new(p); new(q); {2} p^:=7; q^:=p^-2; {3} q:=p; {4} dispose(p); end. pq pq pp^qq^ p 7 p^ 5 qq^ 75 p p^q^q
Uzdevums Program DemoPointer; p1^= 2 p2^= 4 p3^= 18 p1^= 4 p2^= 4 var p1,p2,p3:^Integer; begin p1:=NIL; p2:=NIL; p3:=NIL; New(p1); New(p2); New(p3); p1^:=2; p2^:=4; p3^:=p1^+Sqr(p2^); writeln('p1^=',p1^:3,' p2^=',p2^:3,' p3^=',p3^:3); p1:=p2; writeln('p1^=',p1^:3,' p2^=',p2^:3) end.
Piemērs main() { int dates[4], *pti, index; float bills[4], *ptf; pti = dates; ptf = bills; for (index = 0; index < 4; index++) printf ("Rādītāji + %d: %10u %10u \n", index, pti + index, ptf + index); } Rādītāji + 0: Rādītāji + 1: Rādītāji + 2: Rādītāji + 3:
Piemērs PROGRAM P_2; var A,B: ^Integer; K : Integer; BEGIN New (A); New (B); A^:=1; B^:=2; K:=A^+B^; Dispose (B); Dispose (A); Write (K); Readkey; END. // 3
DATU STRUKTŪRAS 4. lekcija. Piemēri
Piemērs Meteoroloģiskā stacija ik pēc divām stundām reģistrē gaisa temperatūru. Sastādīt programmu, kura ļauj ievadīt iegūtos mērījumus un aprēķina diennakts vidējo gaisa temperatūru. Tātad diennaktī tiek veikti 12 neatkarīgi mērījumi. program Meteo_stacija; const n=12; var sum,vid:real; i: integer; M:array[1..n] of real; begin for i:=1 to n do Begin write('Ievadi ',i,'. merijumu: '); readln(M[i]); end; sum:=0; for i:=1 to n do sum:=sum+M[i]; vid:=sum/n; writeln('Diennakts videja temperatura ir ',vid:3:1, ' graadi. '); end.
Piemērs program sakarto_1; const n=10; M: array[1..n] of byte=(9,11,12,3,19,1,5,17,19,3); var i, j, buf, k:byte; a:integer; begin writeln('dotais masīvs '); for i:=1 to n do write(M[i]:3); writeln; a:=0; for i:=1 to n-1 do for j:=i+1 to n do begin a:=a+1; if M[i]<M[j] then begin buf:=M[i]; M[i]:=M[j]; M[j]:= buf; end; for k:=1 to n do write(' ',M[k]); writeln(' ir veiktas ',a, ' iterācijas'); end. {190}
Piemērs program burbulis; const n =10; M:array[1..n] of byte =(9,11,12,3,19,1,5,17,19,3); var i,j,k,a,buf: integer; begin writeln ('dotais masivs'); for i:=1 to n do write(' ',M[i]); writeln; a:=0; for i:=n downto 2 do begin for j:=1 to i-1 do begin a:=a+1; if M[j+1]>M[j] then begin buf:=M[j]; M[j]:=M[j+1]; M[j+1]:=buf; end; end; end; for k:=1 to n do write(' ',M[k]); writeln(' ir veiktas',a, ' iteracijas'); end. {45}
program dala; const n=20; M:array[1..n] of byte =(20,20,19,19,19,18,17,17,12,12,11,10,9,9,5,5, 3, 3, 2, 1); var atsl,i,pirm,ped:byte; a: integer; rez: boolean; begin writeln('dotais masīvs'); for i:=1 to n do write(' ',M[i]); writeln; write('ievadaam mekleessanas atsleegu '); readln(atsl); a:=0; pirm:=1; ped:=n; rez:=false; repeat i:=(pirm+ped) div 2; if M[i]=atsl then rez:=true else if M[i]>atsl then pirm:=i+1 else ped:=i-1; a:=a+1; until (rez) or (pirm>ped); if rez then Writeln(' mekleejamais elements atrodas ',i, '-jaa vietaa ') else writeln('masivaa nav mekleetaa elementa'); writeln('mekleessana veikta ar ', a, ' iteraacijaam') end.
program izslegt; const n=10; Mas:array[1..n] of byte=(15, 35, 27, 6,3, 74, 42, 15, 43, 91); var x, j, i, m: byte; begin writeln(sakotnejais masivs); for i:=1 to n do write(' ',Mas[i]); writeln; write(' izsleedzamais elements '); readln(x); m:=n; j:=0; i:=0; Repeat i:=i+1; while Mas[i]=x do begin j:=i; repeat Mas[j]:=Mas[j+1]; j:=j+1; until j>=m; m:=m-1; end; until i>=m; for i:=m+1 to n do Mas[i]:=0; writeln('iegūtais masīvs ir'); for i:=1 to n do write(' ',Mas[i]); writeln; end end.
Paškontrole 1. Dots programmas fragments: var A : array[1..30] of real; B : array[-5…5] of integer; C : array[11..25] of char; Noteikt katram masīvam: a) elementu skaitu; b) kā pirmajam un pēdējam elementam ar operatora readln palīdzību piešķirt vērtības? 2. Definēt masīvus, kuros var ierakstīt: a) 35 kontroldarba atzīmes; b) 20 automobiļu cenas; c) 50 atbildes (ar jā vai nē) uz vienu jautājumu. 3. Sastādīt programmu, kura lietotāja ievadīto vārdu izdrukā apgrieztā secībā. Piemēram: Students – stnedutS.