Egyszerű algortmusok Tartalomjegyzék Összegzés...2 Maxmum kválasztás...3 Mnmum kválasztás...4 Megszámlálás...5 Eldöntés...6 Eldöntés - wle...8 Lneárs keresés...10 Készítette: Gál Tamás Creatve Commons -Nevezd meg!-ne add el!-így add tovább! 2.5 Magyarország lcenc alatt asználató GT Egyszerű algortmusok 1
Összegzés Ossz = 0 cklus = 0.. n - 1 Ossz = Ossz + T[] cklus vége nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt Ossz = 0; for(nt =0; <n; ++) { Ossz = Ossz + T[]; for (nt =0;<n;++) {Console.Wrte(T[]+", "); Console.WrteLne(); Console.WrteLne("Összeg: "+Ossz); - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Ossz = 0 = 0 < n Cklusmag Ossz = Ossz + T[] = + 1 Pascal esetén: - A tömbndex rendszernt 1-től ndul - Klépés a FOR cklusból, a a cklusváltozó > mnt a végérték program Osszeg; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, Ossz: nteger; begn randomze; for :=1 to n do T[]:=random(200); Ossz:=0; for :=1 to n do begn Ossz:=Ossz + T[]; end; for :=1 to n do wrte(t[], ', ');wrteln(); wrteln('összeg: ', Ossz); Ossz = 0 = 1 > n Cklusmag Ossz = Ossz + T[] = + 1 GT Egyszerű algortmusok 2
Maxmum kválasztás Max = T[0] cklus = 0.. n - 1 Ha Max<T[] akkor Max = T[] cklus vége Megj. Ha a kezdő értékadásnál Max = T[0] megoldást asználjuk, akkor a FOR cklus cklusváltozójának kezdő értéke leet 1. Max = T[0] = 0 nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt Max = T[0]; for(nt =0; <n; ++) { f (Max<T[]) { Max = T[]; < n Max < T[] Cklusmag Max = T[] for (nt =0;<n;++) {Console.Wrte(T[]+", "); Console.WrteLne(); Console.WrteLne("Maxmum: "+Max); = + 1 - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Pascal esetén: - A tömbndex rendszernt 1-től ndul - Klépés a FOR cklusból, a a cklusváltozó > mnt a végérték program Maxmum; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, Max: nteger; begn randomze; for :=1 to n do T[]:=random(200); Max:=T[1]; for :=2 to n do begn f Max<T[] ten Max:=T[]; end; Max = T[1] = 1 > n Max < T[] Cklusmag for :=1 to n do wrte(t[], ', ');wrteln(); wrteln('maxmum: ', Max); = + 1 Max = T[] GT Egyszerű algortmusok 3
Mn = T[0] cklus = 0.. n - 1 Ha Mn>T[] akkor Mn = T[] cklus vége Mnmum kválasztás Megj. Ha a kezdő értékadásnál Mn = T[0] megoldást asználjuk, akkor a FOR cklus cklusváltozójának kezdő értéke leet 1. nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt Mn = T[0]; for(nt =0; <n; ++) { f (Mn>T[]) { Mn = T[]; for (nt =0;<n;++) {Console.Wrte(T[]+", "); Console.WrteLne(); Console.WrteLne("Mnmum: "+Mn); - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Mn = T[0] = 0; < n Mn > T[] = + 1 Cklusmag Mn = T[] Pascal esetén: - A tömbndex rendszernt 1-től ndul - Klépés a FOR cklusból, a a cklusváltozó > mnt a végérték program Mnmum; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, Mn: nteger; begn randomze; for :=1 to n do T[]:=random(200); Mn:=T[1]; for :=2 to n do begn f Mn>T[] ten Mn:=T[]; end; Mn = T[1] = 1; > n Mn > T[] Cklusmag for :=1 to n do wrte(t[], ', ');wrteln(); wrteln('mnmum: ', Mn); = + 1 Mn = T[] GT Egyszerű algortmusok 4
Megszámlálás Mondatszerű leírás: db = 0 cklus = 0.. n - 1 Ha 100<T[] akkor db = db + 1 cklus vége db = 0 = 0 nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt db = 0; for(nt =0; <n; ++) { f (100<T[]) { db++; < n Feltétel Pl. 100 < T[] Cklusmag db = db + 1 for (nt =0;<n;++) {Console.Wrte(T[]+", "); Console.WrteLne(); Console.WrteLne("Darabszám: "+db); = + 1 - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Pascal esetén: - A tömbndex rendszernt 1-től ndul - Klépés a FOR cklusból, a a cklusváltozó > mnt a végérték db = 0 program Mnmum; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, db: nteger; begn randomze; for :=1 to n do T[]:=random(200); db:=0; for :=1 to n do begn f 100<T[] ten db:=db+1; end; = 1 > n Feltétel Pl. 100 < T[] Cklusmag db = db + 1 for :=1 to n do wrte(t[], ', ');wrteln(); wrteln('darabszám: ', db); = + 1 GT Egyszerű algortmusok 5
Eldöntés van = 0 cklus = 0.. n - 1 Ha 100<T[] akkor van = 1 cklus vége Ha van=1 akkor KI: van egyébként KI: nncs nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt van = 0; for(nt =0; <n; ++) { f (100<T[]) { van=1; f (van==1) {Console.WrteLne("van"); else {Console.WrteLne("nncs"); for (nt =0;<n;++) {Console.Wrte(T[]+", "); - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln van = 0 = 0 < n K: van van = 1 K: nncs Feltétel Pl. 100 < T[] Cklusmag van = 1 = + 1 GT Egyszerű algortmusok 6
Pascal esetén: - A tömbndex rendszernt 1-től ndul - Klépés a FOR cklusból, a a cklusváltozó > mnt a végérték program Eldont; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, van: nteger; begn randomze; for :=1 to n do T[]:=random(200); van:=0; for :=1 to n do begn f 100<T[] ten van:=1; end; f van=1 ten wrteln('van') else wrteln('nncs'); for :=1 to n do wrte(t[], ', ');wrteln(); van = 0 = 1 > n K: van van = 1 K: nncs Feltétel Pl. 100 < T[] Cklusmag van = 1 = + 1 GT Egyszerű algortmusok 7
Eldöntés - wle = 0 cklus amíg <n és T[]<> ker = + 1 cklus vége Ha van=1 akkor KI: van egyébként KI: nncs nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt ; nt = 0; wle(<n && T[]!= ker) { ++; f (<n) {Console.WrteLne("van"); else {Console.WrteLne("nncs"); for (nt j=0;j<n;j++) {Console.Wrte(T[j]+", "); - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Megtalálató az n elemű t tömbben a keresett érték? C alapú és Java nyelv esetén a tömbelemek ndexelése 0-val kezdődk. = 0 < n Cklusmag < n és t[]<>ker = + 1 K: van K: nncs GT Egyszerű algortmusok 8
Pascal esetén: - A tömbndex rendszernt 1-től ndul - Klépés a FOR cklusból, a a cklusváltozó > mnt a végérték program Eldont; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, ker: nteger; begn randomze; for :=1 to n do T[]:=random(200); ker:=5; :=1; wle (<=n) and (T[] <> ker) do := + 1; f <=n ten wrteln('van') else wrteln('nncs'); for :=1 to n do wrte(t[], ', ');wrteln(); Megtalálató az n elemű t tömbben a keresett érték? = 1 <= n és t[]<>ker <= n Cklusmag = + 1 K: van K: nncs GT Egyszerű algortmusok 9
Lneárs keresés = 0 cklus amíg <n és T[]<> ker = + 1 cklus vége Ha van=1 akkor KI: Inexe, egyébként KI: nncs nt[] T = {101, 7, 8, 11, 255, 321; nt n = T.Lengt; //a tömb mérete nt ; nt = 0; wle(<n && T[]!= ker) { ++; f (<n) {Console.WrteLne("Indexe: "+); else {Console.WrteLne("nncs"); for (nt j=0;j<n;j++) {Console.Wrte(T[j]+", "); - Lengt elyett lengt - Console.Wrte elyett System.out.prnt - Console.WrteLne elyett System.out.prntln Megtalálató az n elemű t tömbben a keresett érték, és ányadk elyen van? C alapú és Java nyelv esetén a tömbelemek ndexelése 0-val kezdődk. < n Cklusmag = 0 < n és t[]<>ker = + 1 K: 'Indexe:', K: nncs GT Egyszerű algortmusok 10
Pascal esetén: - A tömbndex rendszernt 1-től ndul program Eldont; const n=20; {a tömb elemenek a száma var T: array[1..n] of nteger;, ker: nteger; begn randomze; for :=1 to n do T[]:=random(200); ker:=5; :=1; wle (<=n) and (T[] <> ker) do := + 1; f <=n ten wrteln('indexe: ', ) else wrteln('nncs'); for :=1 to n do wrte(t[], ', ');wrteln(); Megtalálató az n elemű t tömbben a keresett érték, és ányadk elyen van? A Pascal nyelv esetén a tömbelemek ndexelése rendszernt 1-el kezdődk. <= n Cklusmag = 1 <= n és t[]<>ker = + 1 K: 'Indexe', K: nncs GT Egyszerű algortmusok 11