Másolásra épülő algoritmusok

Hasonló dokumentumok
Egyszerű algoritmusok

Vezérlési szerkezetek

Rendező algoritmusok. Tartalomjegyzék. Készítette: Gál Tamás

Vezérlési szerkezetek

Véletlenszám generátorok. 5. előadás

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

Informatikai tehetséggondozás:

AAO 3. Csink László 2007

ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK

Véletlenszám generátorok. 6. előadás

Programozási tételek. Elemi programozási tételek. (Sorozathoz érték rendelése)

Programozási tételek. Jegyzet. Összeállította: Faludi Anita 2012.

Algoritmizálás és adatmodellezés tanítása 1. előadás

8. Programozási tételek felsoroló típusokra

Algoritmusok és adatszerkezetek I. 10. előadás




Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

Halmaz típus Értékhalmaz:

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Algoritmizálás és adatmodellezés tanítása 6. előadás

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Párhuzamos algoritmusok

Összetett programozási tételek

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Objektumorientált Programozás VI.

Eljárások, függvények

23. Fa adatszerkezetek, piros-fekete fa adatszerkezet (forgatások, új elem felvétele, törlés)(shagreen)

C# feladatok gyűjteménye

INFORMATIKAI ALAPISMERETEK

hatására hátra lép x egységgel a toll

Smalltalk 2. Készítette: Szabó Éva

INFORMATIKAI ALAPISMERETEK

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

Dinamikus programozás

Algoritmusok, adatszerkezetek I.

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

14. Mediánok és rendezett minták

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

<... < s n. Írjuk le a megoldási módszert, és adjunk meg egy megjegyzésekkel ellátott Pascal-programot. A bemeneti adatokat helyesnek tekintjük.

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Statisztikai. Statisztika Sportszervező BSc képzés (levelező tagozat) Témakörök. Statisztikai alapfogalmak. Statisztika fogalma. Statisztika fogalma

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Algoritmizálás és adatmodellezés tanítása 3. előadás

Objektum Orientált Programozás VII.

Dinamikus programozás. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Érdekes informatika feladatok

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

INFORMATIKA javítókulcs 2016

Multihalmaz, intervallumhalmaz

Algoritmusok vektorokkal keresések 1

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

Dinamikus programozás

Mátrix-vektor feladatok Összeállította dr. Salánki József egyetemi adjunktus Begépelte Dr. Dudás László és Bálint Gusztáv

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Programoza s I. 10. elo ada s Rendezett to mbo k. Sergya n Szabolcs

BME MOGI Gépészeti informatika 5.

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

A mágneses tér energiája, állandó mágnesek, erőhatások, veszteségek

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

Adatbázis rendszerek Gy: Algoritmusok C-ben

A feladat. A főprogram

Programozás II. 4. Dr. Iványi Péter

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

I. Egydimenziós tömb elemeinek rendezése

Algoritmizálás, adatmodellezés tanítása 2. előadás

Döntéstámogató módszerek segédlet

Érdekes informatika feladatok

C string műveletek (string.h alkalmazása)

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása



Összetett programozási tételek 2.

Közismereti informatika 2.zh T-M szakirány

Programozási segédlet

ERP beruházások gazdasági értékelése


Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Kézikönyv. Költségszámítás

9. Visszavezetés egyedi felsorolókkal

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Relációk. Vázlat. Példák direkt szorzatra

4 2 lapultsági együttható =

Automaták és formális nyelvek

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Programozás alapjai. 5. előadás

Műszaki folyamatok közgazdasági elemzése Előadásvázlat november 06. A közgazdaságtan játékelméleti megközelítései

Vázlat. Relációk. Példák direkt szorzatra

Maximum kiválasztás tömbben

PROGRAMOZÁSI TÉTELEK

Környezetvédelmi analitika


Átírás:

Másolásra épülő algortmusok Tartalomjegyzék Másolás...2 Másolás és módosítás...3 Másolás és módosítás plusz...4 Tömbelemek módosítása...5 Kválogatás...6 Szétválogat...7 Unó...8 Metszet...9 Összefuttatás...10 Összefuttatás smétlődés nélkül...11 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 Másolásra épülő algortmusok 1

Mondatszerű leírás: Másolás cklus.. n - 1 b[] = a[] nt[] a = 101, 7, 8, 11, 255, 321; nt n = a.lengt; //a tömb mérete nt[] b = new nt[n]; for(nt =0; <n; ++) b[] = a[]; //A c tömbbe töltött elemek száma: j for (nt =0;<n;++) Console.Wrte(b[]+", "); b[] = a[] 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 Masol; const n=20; a tömb elemenek a száma var a, b: array[1..n] of nteger; : nteger; begn randomze; for :=1 to n do a[]:=random(200); for :=1 to n do begn b[]:=a[]; for :=1 to n do wrte(a[], ', ');wrteln(); for :=1 to n do wrte(b[], ', '); end. = 1 n < b[]:=a[] GT Másolásra épülő algortmusok 2

Mondatszerű leírás: cklus.. n - 1 b[] = a[] + 1 Másolás és módosítás nt[] a = 101, 7, 8, 11, 255, 321; nt n = a.lengt; //a tömb mérete nt[] b = new nt[n]; for(nt =0; <n; ++) b[] = a[] + 1; //A c tömbbe töltött elemek száma: j for (nt =0;<n;++) Console.Wrte(b[]+", "); b[] = a[] + 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 MasolModost; const n=20; a tömb elemenek a száma var a, b: array[1..n] of nteger; : nteger; begn randomze; for :=1 to n do a[]:=random(200); = 1 for :=1 to n do begn b[]:=a[]+1; for :=1 to n do wrte(a[], ', ');wrteln(); for :=1 to n do wrte(b[], ', '); end. n < b[] := a[] + 1 GT Másolásra épülő algortmusok 3

Mondatszerű leírás: Másolás és módosítás plusz cklus.. n - 1 b[] = a[] + 1 nt[] a = 101, 7, 8, 11, 255, 321; nt n = a.lengt; //a tömb mérete nt[] b = new nt[n]; for(nt =0; <n; ++) b[] = modost(a[]); //A c tömbbe töltött elemek száma: j for (nt =0;<n;++) Console.Wrte(b[]+", "); b[] = modost(a[]) 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 MasolModostPlusz; const n=20; a tömb elemenek a száma var a, b: array[1..n] of nteger; : nteger; = 1 functon modost(:nteger): nteger; begn modost := +1; begn randomze; for :=1 to n do a[]:=random(200); for :=1 to n do begn b[]:=a[]+1; for :=1 to n do wrte(a[], ', ');wrteln(); for :=1 to n do wrte(b[], ', '); end. n < b[] = modost(a[]) GT Másolásra épülő algortmusok 4

Mondatszerű leírás: Tömbelemek módosítása cklus.. n - 1 a[] = a[] + 1 nt[] a = 101, 7, 8, 11, 255, 321; nt n = a.lengt; //a tömb mérete for(nt =0; <n; ++) a[] = a[] + 1; //A c tömbbe töltött elemek száma: j for (nt =0;<n;++) Console.Wrte(a[]+", "); a[] = a[] + 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 TombModost; const n=20; a tömb elemenek a száma var a: array[1..n] of nteger; : nteger; begn randomze; for :=1 to n do a[]:=random(200); for :=1 to n do wrte(a[], ', ');wrteln(); = 1 for :=1 to n do begn a[]:=a[]+1; for :=1 to n do wrte(a[], ', '); end. n < a[] := a[] + 1 GT Másolásra épülő algortmusok 5

Kválogatás Mondatszerű leírás: j = 0 cklus.. n - 1 //Az 100-nál nagyobb számokat válogatjuk a a[] > 100 b[j] = a[] a vége C alapú és Java nyelv esetén a tömbelemek ndexelése 0-val kezdődk. j = 0 Az n elemű a tömb eleme közül azokat, amelyek megfelelnek a feltételnek b tömbbe másoljuk. nt[] a = 101, 7, 8, 11, 255, 321; nt n = a.lengt; //a tömb mérete nt[] b = new nt[n]; nt j = 0; for(nt =0; <n; ++) f(a[] > 100) b[j] = a[]; j++; //A b tömbbe töltött elemek száma: j for (nt =0;<j;++) Console.Wrte(b[]+", "); Feltétel Pl. 100 < a[] Cklusmag b[j] = a[] 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 Kvalogat; const n=20; a tömb elemenek a száma var a, b: array[1..n] of nteger;, j: nteger; begn randomze; for :=1 to n do a[]:=random(200); j:=1; for :=1 to n do begn f a[]>100 ten begn b[j]:=a[]; j:=j+1; for :=1 to n do wrte(a[], ', '); wrteln(); for :=1 to j-1 do wrte(b[], ', '); end. j = 1 = 1 > n Feltétel Pl. 100 < a[] Az n elemű a tömb eleme közül azokat, amelyek megfelelnek a feltételnek b tömbbe másoljuk. Cklusmag b[j] = a[] GT Másolásra épülő algortmusok 6

Szétválogat Mondatszerű leírás: j = 0 k = 0 cklus.. n-1 a a[] > 100 akkor b[j] = a[] különben c[k] = a[] a vége C alapú és Java nyelv esetén a tömbelemek ndexelése 0-val kezdődk. j = 0; k = 0 Az n elemű a tömb eleme közül azokat, amelyek megfelelnek a feltételnek b a többt c tömbbe másoljuk. nt[] a = 109, 7, 3, 5, 344, 2, 6, 101; nt n = a.lengt; nt[] b = new nt[n]; nt[] c = new nt[n]; nt j = 0; nt k = 0; for(nt =0; <n; ++) f(a[] > 100) b[j] = a[]; j++; else c[k] = a[]; k++; b[j] = a[] Feltétel Pl. 100 < a[] Cklusmag c[k] = a[] for (nt =0;<j;++) Console.Wrte(b[]+", "); Console.WrteLne(); for (nt =0;<k;++) Console.Wrte(c[]+", "); program Szetvalogat; const n=20; a tömb elemenek a száma var a, b, c: array[1..n] of nteger;, j, k: nteger; begn randomze; for :=1 to n do a[]:=random(200); j:=1; k:=1; for :=1 to n do begn f a[]>100 ten begn b[j]:=a[]; j:=j+1; end else begn c[k]:=a[]; k:=k+1; for :=1 to n do wrte(a[], ', '); wrteln(); for :=1 to j-1 do wrte(b[], ', '); wrteln(); for :=1 to k-1 do wrte(c[], ', '); end. Pascal nyelv esetén a tömbelemek ndexelése rendszernt 1-el kezdődk. b[j] = a[] j = 1; k = 1 = 1 > n Feltétel Pl. 100 < a[] Az n elemű a tömb eleme közül azokat, amelyek megfelelnek a feltételnek b a többt c tömbbe másoljuk. Cklusmag c[k] = a[] GT Másolásra épülő algortmusok 7

Unó Mondatszerű leírás: n = a tömb mérete m = b tömb mérete // a tömb elemet átmásoljuk c-be cklus.. n-1 c[] = a[] k = n C alapú és Java nyelv esetén a tömbelemek ndexelése 0-val kezdődk. Az n elemű a tömb elemet c tömbbe másoljuk. // végg lépkedünk a b tömbön cklus j = 0.. m-1 // ellenőrzzük, ogy b[j] értéke megtalálató-e már c-ben cklus amíg <n és b[j]<>a[] c[] = a[] // a b[j] értéke még nncs c-ben, akkor betesszük (Ekkor =n) a =n akkor c[k] = b[j] a vége nt[] a = 3, 5, 8, 4; nt[] b = 2, 3, 7, 9; nt n=a.lengt, m=b.lengt; nt o = n + m; nt[] c = new nt[o]; Az m elemű b tömb elemet c tömbbe másoljuk, a értéküket nem tartalmazza az a tömb. Cklusmag Wle cklus k = n j = 0 j < m ; nt, j, k; //Unó tétel for(=0; <n; ++) c[] = a[]; és b[j] <> a[] k=n; for(j=0; j<m; j++) ; wle(<n && b[j]!= a[]) ++; f( == n) c[k] = b[j]; k++; o = k; //A c tömbbe töltött elemek száma for(=0; <o; ++) Console.Wrte(c[]+", "); elágazás c[k] = b[j] = n for (=0;<o;++) System.out.prnt(c[]+", "); GT Másolásra épülő algortmusok 8

Mondatszerű leírás: Metszet n = a tömb mérete m = b tömb mérete k = 0 // végg lépkedünk az a tömbön cklus.. n-1 j = 0 // ellenőrzzük, ogy a[] értéke megtalálató-e b-ben cklus amíg j<m és b[j]<>a[] // a a[] értéke megtalálató b-ben, akkor betesszük a c tömbbe a j<m akkor c[k] = a[] a vége nt[] a = 5, 9, 3, 4, 7 ; nt[] b = 6, 5, 7, 8, 15, 20 ; nt n = a.lengt; //a tömb mérete nt m = b.lengt; //b tömb mérete nt o = n + m; nt[] c = new nt[o]; nt j; nt k = 0; for (nt =0; <n; ++) j = 0; wle(j<m && b[j]!= a[]) j++; f (j<m) c[k] = a[]; k++; o = k; //A c tömbbe töltött elemek száma Az n elemű a tömb elemet c tömbbe másoljuk, a értéküket tartalmazza a b tömb. Cklusmag Wle cklus elágazás c[k] = a[] k = 0 j = 0; j < m és b[j] <> a[] j = m for(nt =0; <o; ++) Console.Wrte(c[]+", "); for (nt =0;<o;++) System.out.prnt(c[]+", "); GT Másolásra épülő algortmusok 9

Mondatszerű leírás: // Az n elemű a és a m elemű b rendezett tömbök elemet a c tömbbe másoljuk a sorrend megtartásával adb=0; bdb=0; cdb=0; // az a és a b tömb eleme közül mndg a következő legksebb értékűt llesztjük a c tömb végére cklus amíg adb<n és bdb<m Ha (a[adb]<b[bdb]) akkor c[cdb] = a[adb]; adb++; egyébként c[cdb] = b[bdb]; bdb++; a vége cdb++; // Ha már csak az a tömbben maradtak értékek, akkor azokat másoljuk a c -be cklus amíg adb<n c[cdb] = a[adb]; adb++; cdb++; // Ha már csak a b tömbben maradtak értékek, akkor azokat másoljuk a c -be cklus amíg bdb<m c[cdb] = b[bdb]; bdb++; cdb++; Összefuttatás Wle cklus elágazás c[cdb] = a[adb] adb = adb + 1 adb = 0 bdb = 0 cdb = 0 adb < n és bdb < m a[adb] < b[bdb] cdb = cdb + 1 Összefuttatás c[cdb] = b[bdb] bdb = bdb + 1 nt[] a = 1, 7, 8, 11; nt[] b = 2, 5, 8, 9; nt n = a.lengt; //a tömb mérete nt m = b.lengt; //b tömb mérete nt o = n + m; nt[] c = new nt[o]; nt adb=0; nt bdb=0; nt cdb=0; wle (adb<n && bdb<m) f (a[adb]<b[bdb]) c[cdb] = a[adb]; adb++; else c[cdb] = b[bdb]; bdb++; cdb++; wle (adb<n) c[cdb] = a[adb]; adb++; cdb++; wle (bdb<m) c[cdb] = b[bdb]; bdb++; cdb++; // Az eredmény megjelenítése: for (nt =0;<o;++) Console.Wrte(c[]+", "); Wle cklus adb < n c[cdb] = a[adb] adb = adb + 1 cdb = cdb + 1 Wle cklus bdb < m c[cdb] = b[bdb] bdb = bdb + 1 cdb = cdb + 1 GT Másolásra épülő algortmusok 10

Összefuttatás smétlődés nélkül Az előző összefuttatásnál, a egy érték mndkét tömbben szerepel akkor kétszer lesz bellesztve a c tömbbe. Ennek elkerülésére a következő elemek értékének egyenlőségét s vzsgáln kell. Ha azonosak, akkor mndkét tömbmutatót növeljük 1-el. wle (adb<a.lengt && bdb<b.lengt) f (a[adb]==b[bdb]) c[cdb] = a[adb]; adb++; bdb++; else f (a[adb]<b[bdb]) c[cdb] = a[adb]; adb++; else c[cdb] = b[bdb]; bdb++; cdb++; GT Másolásra épülő algortmusok 11

GT Másolásra épülő algortmusok 12