160 likes | 249 Views
Tömbök és programozási tételek. Pascal nyelven. algoritmus feltölt_1 változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel be: x[i] cvége … algoritmus vége. program feltolt_1; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do begin
E N D
Tömbök és programozási tételek Pascal nyelven
algoritmus feltölt_1 változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel be: x[i] cvége … algoritmus vége program feltolt_1; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do begin write(' Kérem a tömbelemet: '); readln(x[i]); end; … end. Tömb feltöltése felhasználói bevitellel
algoritmus feltölt_2 változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel x[i]:=érték cvége … algoritmus vége program feltolt_2; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do x[i]:=érték; … end. Tömb feltöltése értékadással
Tömbfeltöltés értékadással • Értékadás esetében általában véletlen számokat használunk. • Véletlen számok készítéséhez a program elején a randomize; utasítást kell kiadni • Az értékadás a következőképpen történik:x[i]:=random(max-min)+min; • A max és a min értékek az adott intervallum legkisebb és legnagyobb elemei
algoritmus kiír változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel ki: x[i] cvége … algoritmus vége program kiir; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do write(x[i],''); … end. Tömb kiíratása szóközzel elválasztva
algoritmus összegzés var i, össz: egészx: tömb [1..n] egész … össz:=0 ciklus i:=1..n lépésköz=1 ismételössz:=össz + x[i] cvége ki: össz … algoritmus vége program osszegzes; var x:array[1..n] of integer; i,ossz:integer; begin … ossz:=0; for i:=1 to n do ossz:=ossz+x[i]; writeln('Az összeg: ‘,ossz); … end. Összegzés tétele
Összegzés tétele • Amennyiben az összegzés tételét átlag számításához használjuk, akkor további két dolgot kell beírni: • a változók közé (var) fel kell venni az átlag nevű változót, ami valós típusú (var atlag:real;) • a kiíratás előtt ki kell számolni az átlagot: atlag:=ossz/n;
algoritmus megszámlálás változó i, db : egész x : tömb [1..n] egész … db := 0 ciklus i:=1..n lépésköz=1 ismétel ha (x[i] T tulajdonságú) akkor db:= db+1 hvége cvége ki:db …. algoritmus vége program megszamlal; var x:array[1..n] of integer; i,db:integer; begin … db:=0; for i:=1 to n do if (x[i] T tul.) then db:=db+1; writeln('A T tulajdonságú elemek száma: ‘,db); … end. Megszámlálás tétele
algoritmus kiválogat változó i, db :egész X, X2 : tömb [1..n] egész … db:=0 ciklus i=1-től n-ig lépésköz 1 ismétel Ha (X[i] T tulajdonságú) akkor db:=db+1 X2[db]:=X[i] hvége cvége … algoritmus vége program kivalogat; var x,x2:array[1..n] of integer; i,db:integer; begin … db:=0; for i:=1 to n do if (x[i] T tul.) then begin db:=db+1; x2[db]:=x[i]; end; … end. Kiválogatás tétele
Kiválasztás tétele • Az elöltesztelő ciklus feltételébe a feladatban megadott T tulajdonság ellenkezőjét kell beírni • Pl.: ha a tömbben az 1-eseket keressük, akkor a feltétel ennek ellenkezője (nem egyenlő) lesz: x[i]<>1 • A kisebb ellenkezője: nagyobb és egyenlő • A nagyobb ellenkezője: kisebb és egyenlő
algoritmus kiválasztás változó i: egész változó x:tömb[1..n] egész … i:=1 amíg (x[i] nem T tulajdonságú) ismétel i:=i+1 avége ki: i … algoritmus vége program kivalaszt; var x:array[1..n] of integer; i:integer; begin … i:=1; while (x[i] NEM T tul.) do i:=i+1; writeln(' Az első T tulajdonságú elem helye: ',i); … end. Kiválasztás tétele A tétel használatának előfeltétele, hogy biztosan tudjuk, hogy van olyan elem a tömbben, amilyet keresünk (T tulajdonságú)
algoritmus eldöntés változó i: egész VAN: logikai x: tömb [1..n] : egész … i:=1 amíg (i<=n) ÉS (x[i] nem T tulajdonságú) ismétel i:=i+1 avége VAN:=(i <= n) ha VAN akkor ki: "Létezik a keresett elem " különben ki: "Nincs a keresett elem a tömbben" hvége algoritmus vége program eldont; var x:array[1..n] of integer; i:integer; van:boolean; begin … i:=1; while (i<=n) and (x[i] NEM T tul.) do i:=i+1; van:=(i<=n); if van then writeln('Létezik a keresett elem') else writeln('Nincs a keresett elem a tömbben') … end. Eldöntés tétele
algoritmus linker változó i: egész VAN: logikai x: tömb [1..n] : egész … i:=1 amíg (i<=n) ÉS (x[i] nem T tulajdonságú) ismétel i:=i+1 avége VAN:=(i <= n) ha VAN akkor ki: i különben ki: "Nincs a keresett elem a tömbben" hvége algoritmus vége program linker; var x:array[1..n] of integer; i:integer; van:boolean; begin … i:=1; while (i<=n) and (x[i] NEM T tul.) do i:=i+1; van:=(i<=n); if van then writeln('Létezik az elem, helye: ',i) else writeln('Nincs a keresett elem a tömbben') … end. Lineáris keresés tétele
Lineáris keresés tétele • Amennyiben nem az adott, T tulajdonságú elem helyét, hanem az értékét akarjuk kiíratni, akkor az i nevű változó helyett az x[i] tömbelem értékét kell kiíratni.
algoritmus minimum változó i, min:egész x: tömb [1..n] : egész … min := 1 ciklus i:=2..n lépésköz 1 ismétel ha x[min] > x[i] akkor min := i hvége cvége ki: min, x[min] … algoritmus vége program minimum; var x:array[1..n] of integer; i,min:integer; begin … min:=1; for i:=2 to n do if x[min] > x[i] then min:=i; writeln('A legkisebb elem helye: ',min, ' értéke: ‘,x[min]); … end. Minimumkiválasztás tétele
algoritmus maximum változó i, max:egész x: tömb [1..n] : egész … max := 1 ciklus i:=2..n lépésköz 1 ismétel ha x[max] < x[i] akkor max := i hvége cvége ki: max, x[max] … algoritmus vége program maximum; var x:array[1..n] of integer; i,max:integer; begin … max:=1; for i:=2 to n do if x[max] < x[i] then max:=i; writeln('A legnagyobb elem helye: ',max, ' értéke: ‘,x[max]); … end. Maximumkiválasztás tétele