Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

Hasonló dokumentumok
Megoldott feladatok. Informatika

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

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

Rekurzió(k) - iteráció(k) Gyakorlati összefoglaló Tartalom... 2 Alap rekurzív példák... 3 Tételek rekurzív és iteratív megoldásai...

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

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

Algoritmizálás + kódolás C++ nyelven és Pascalban

Delphi programozás III.

Algoritmusok - pszeudókód... 1

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

<... < 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.

A feladat. A főprogram

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

Tartalomjegyzék Algoritmusok - pszeudókód

Feltételezés: A file strukturálisan helyes, tanszékenként nem üres, de az adott listázási feladatban kikötött számút nem haladja meg.

Egyszerű programok készítése Kifejezések Bitszintű műveletek Relációs műveletek... 58

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

SZÁMÍTÓGÉPI GRAFIKA MARKEREK

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

6. A Pascal nyelv utasításai

2.6. Utasítások használata

14. Mediánok és rendezett minták

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Programozás alapjai Free Pascal

1. A feladatról. 2. Az áramkör leírása. Mechatronika, Optika és Gépészeti Informatika Tanszék D528. Léptetőmotor vezérlése

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..

PASzSz. Dr. Kotsis Domokos

INFORMATIKAI ALAPISMERETEK

Eljárások, függvények

Demográfiai modellek (folytatás)

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Delphi programozás IV.

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

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

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

Érdekes informatika feladatok

Az első fájlos program

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Bakalárska práca Bakalár munka

DOKUMENTÁCIÓ KÉSZÍTETTE: Naszári László I. évf. levelező Informatika tanári szak 2003.

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Informatika terméktervezőknek

Felvételi tematika INFORMATIKA

Érdekes informatika feladatok

Option Explicit Option Base 1

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

értékel függvény: rátermettségi függvény (tness function)

Maximum kiválasztás tömbben

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Demografia / Demográfiai modell

Egyszerű példaprogramok gyakorláshoz

A rekurzív algoritmusok tanításáról

INFORMATIKAI ALAPISMERETEK

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

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Hetedik témakör kiegészítés:

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

GazSzim Szlávi Péter

Algoritmusok vektorokkal keresések 1

Delphi programozás I.

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

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

Demográfiai modellek

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

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

8.4 Többszálú alkalmazások készítése

2018, Funkcionális programozás

Java II. I A Java programozási nyelv alapelemei

C# feladatok gyűjteménye

7. Strukturált típusok

Algoritmizálás + kódolás C++ nyelven és Pascalban

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Az Összegfokozatos listázás téma 2. gyakorlata

1. Alapok. Programozás II

Táblázatok fontosabb műveletei 1

Számítógépes grafika

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Informatika 7. munkafüzet megoldásai

REKURZIÓK SZÁMÍTÓGÉPES PROGRAMOK SEGÍTSÉGÉVEL

Java II. I A Java programozási nyelv alapelemei

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

A Pascal programozási nyelvben minden programnak a következő szerkezete van:

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

A Turbo Vision ismertetése

NAGYPONTOSSÁGÚ RACIONÁLIS-ARITMETIKA EXCEL VISUAL BASIC KÖRNYEZETBEN TARTALOM

2018, Funkcionális programozás

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

2019, Funkcionális programozás. 5. el adás. MÁRTON Gyöngyvér

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

Szoftvertechnolo gia gyakorlat

Apple Swift kurzus 3. gyakorlat

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

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

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

értékel függvény: rátermettségi függvény (tness function)

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Átírás:

Rendezések Feladat Rendezési algoritmusok kipróbálása, hatékonysági viselkedésének vizsgálata. A rendezések egy ElemSzam méretü r tömben történik. Többféle föltöltés közül lehet választani: o a növekvően / csökkenően rendezettől, o a majdnem rendezetten át, o véletlenszerüen kitöltöttig. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések kiinduló értékének beállítására. Keretprogram 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 Program RendezesKeret; Rendezési algoritmusok kipróbálásához keret. A rendezések egy ElemSzam méretü r töműben történjen. Többféle föltöltés közül lehet választani: - a növekvően / csökkenően rendezettől, - a majdnem rendezetten át, - véletlenszerüen kitöltöttig. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések kiinduló értékének beállítására. Uses Newdelay,Crt,Dos; Const MaxN=1000; Type TElem=Integer; TSorozat=Array[1..MaxN] of TElem; Kezdet,Veg, ElteltIdo: LongInt; s,r : TSorozat; A föltöltések mindkettőt beállítják, a rendezések az r-t rendezik. ElemSzam : Integer; $I RENDMENU.PAS Ebben a file-ban található a rendezéshez szükséges menüző program. Számunkra érdekes most ebből mindössze: - Menuzes(FoMenu), amely beindítja a párbeszédet és hívogatja a megfelelő rendező eljárásokat. - TombKiir, amely az r tartalmát oszloposan megjeleníti a képernyőn. 1

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 Procedure OraIndul; o,p,mp,szmp: Word; ol: LongInt; GetTime(o,p,mp,szmp); ol:=o; konverzió LongInt-té Kezdet:=szmp+100*(mp+60*(p+60*olkonverzió LongInt-té)) OraIndul Procedure OraAll; o,p,mp,szmp: Word; ol: LongInt; GetTime(o,p,mp,szmp); ol:=o; konverzió LongInt-té Veg:=szmp+100*(mp+60*(p+60*olkonverzió LongInt-té)); ElteltIdo:=Veg-Kezdet OraAll Procedure Kiirasok(cim: String); TombKiir(cim); Writeln; Writeln('Eltelt idő:',elteltido, ' századmásodperc.') Kiirasok Procedure EgyszeruCseres; OraIndul; itt van az r rendezése OraAll; Kiirasok('Egyszerü cserés'); r:=s; Az eredeti értéket visszaállítja EgyszeruCseres Procedure MinimumKivalasztasos; OraIndul; itt van az r rendezése OraAll; Kiirasok('Minimumkiválasztásos'); r:=s; Az eredeti értéket visszaállítja MinimumKivalasztasos Procedure Buborek; OraIndul; itt van az r rendezése OraAll; Kiirasok('Buborék'); r:=s; Az eredeti értéket visszaállítja Buborek 2

91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 Procedure JavitottBuborek; OraIndul; itt van az r rendezése OraAll; Kiirasok('Javított buborék'); r:=s; Az eredeti értéket visszaállítja JavitottBuborek Procedure Beilleszteses; OraIndul; itt van az r rendezése OraAll; Kiirasok('Beillesztéses'); r:=s; Az eredeti értéket visszaállítja Beilleszteses Randomize; Mindig véletlenszerű kezdőérték ElemSzam:=100; Opcionális méret Menuzes(FoMenu); End. 3

RendMenu.pas include-állomány $f+ a saját eljárások, függvények kezeléséhez igényli a TURBO PASCAL Const MaxDb = 6; Type MenuPont = Record kerdes: String; sorsz : Byte; tevek : Procedure; segit : Word; Menu = Record cim: String; db : Byte; am : Array [1..MaxDb] of MenuPont; bfx,bfy: Byte; Procedure akozas; Forward; Procedure Ures; Forward; Procedure AblakRajzolas(bfx,bfy,hossz,szel: Byte); Forward; Procedure Menuzes(m: Menu); Forward; Procedure Vege; Forward; Menüdeklaráció: Procedure Menu1; Forward; Parmétermenü Procedure Menu2; Forward; Rendezések menüje Procedure Menu3; Forward; Föltöltések menüje Procedure Menu1_1; Forward; Az egyes rendezéseket hívó eljárás Procedure Menu1_2; Forward; Az egyes rendezéseket hívó eljárás Procedure Menu1_3; Forward; Az egyes rendezéseket hívó eljárás Procedure Menu1_4; Forward; Az egyes rendezéseket hívó eljárás Procedure Menu1_5; Forward; Az egyes rendezéseket hívó eljárás Procedure FeltoltNovekedve; Forward; Procedure FeltoltCsokkenve; Forward; Procedure FeltoltAzonossal; Forward; Procedure FeltoltVeletlennel; Forward; Procedure FeltoltMajdnemRendezve; Forward; Segéd globális eljárás: Procedure TombKiir(cim: String); Forward; A megirandó rendezések: Procedure EgyszeruCseres; Forward; Procedure MinimumKivalasztasos; Forward; Procedure Buborek; Forward; Procedure JavitottBuborek; Forward; Procedure Beilleszteses; Forward; 4

Menüleírótábla deklarációja: Const FoMenu : Menu=(cim: 'Főmenü'; db : 4; am : ((kerdes:'paramétermegadás';sorsz:1;tevek:menu1;segit:1), (kerdes:'feltöltés';sorsz:1;tevek:menu3;segit:3), (kerdes:'rendezési módszer';sorsz:1;tevek:menu2;segit:2), (kerdes:'vége'; sorsz:1;tevek:vege;segit:99), (kerdes:'';sorsz:0;tevek:ures;segit:0), (kerdes:'';sorsz:0;tevek:ures;segit:0)); bfx: 10; bfy: 5); Al1Menu: Menu=(cim: 'Rendezések'; db : 6; am : ((kerdes:'egyszerü cserés';sorsz:1;tevek:menu1_1;segit:4), (kerdes:'minimumkiválasztásos';sorsz:1;tevek:menu1_2;segit:5), (kerdes:'buborék';sorsz:1;tevek:menu1_3;segit:6), (kerdes:'javított buborék';sorsz:1;tevek:menu1_4;segit:7), (kerdes:'beillesztéses';sorsz:3;tevek:menu1_5;segit:8), (kerdes:'vége'; sorsz:1;tevek:vege;segit:99)); bfx: 10; bfy: 5); Al2Menu: Menu=(cim: 'Föltöltések'; db : 6; am : ((kerdes:'növekedően';sorsz:1;tevek:feltoltnovekedve;segit:7), (kerdes:'csökkenően';sorsz:1;tevek:feltoltcsokkenve;segit:8), (kerdes:'azonosakkal';sorsz:1;tevek:feltoltazonossal;segit:9), (kerdes:'véletlennel';sorsz:3;tevek:feltoltveletlennel;segit:10), (kerdes:'majdnem rendezve'; sorsz:1;tevek:feltoltmajdnemrendezve;segit:11), (kerdes:'vége'; sorsz:1;tevek:vege;segit:99)); bfx: 10; bfy: 5); Menütevékenységek deklarációja: Procedure Menu1; HolX: Integer; Repeat GotoXY(20,12); Write('Tömbméret (100..',MaxN,'):'); HolX:=WhereX; Write(' '); GotoXY(HolX,12); Readln(ElemSzam) Until (ElemSzam>=100) and (ElemSzam<=MaxN); 1.Menü Procedure Menu2; Menuzes(Al1Menu); 2.Menü Procedure Menu3; GotoXY(38,12); Menuzes(Al2Menu); 3.Menü 5

Procedure Menu1_1; GotoXY(28,12); Writeln('Egyszerü cserés rendezés'); Window(2,2,78,23); Az aktív ablakterület EgyszeruCseres; akozas 1.1.Menü Procedure Menu1_2; GotoXY(26,12); Writeln('Minimumkiválasztásos rendezés'); Window(2,2,78,23); Az aktív ablakterület MinimumKivalasztasos; akozas 1.2.Menü Procedure Menu1_3; GotoXY(36,12); Writeln('Buborék'); Window(2,2,78,23); Az aktív ablakterület Buborek; akozas 1.3.Menü Procedure Menu1_4; GotoXY(32,12); Writeln('Javított buborék'); Window(2,2,78,23); Az aktív ablakterület JavitottBuborek; akozas 1.4.Menü Procedure Menu1_5; GotoXY(36,12); Writeln('Beillesztéses'); Window(2,2,78,23); Az aktív ablakterület Beilleszteses; akozas 1.5.Menü Procedure FeltoltNovekedve; s[1]:=random(elemszam); For i:=2 to ElemSzam do s[i]:=s[i-1]+random(3) r:=s; TombKiir('Föltöltés növekedve'); 6

akozas FeltoltNovekedve Procedure FeltoltCsokkenve; s[1]:=random(elemszam); For i:=2 to ElemSzam do s[i]:=s[i-1]-random(3) r:=s; TombKiir('Föltöltés csökkenve'); akozas FeltoltCsokkenve Procedure FeltoltAzonossal; s[1]:=random(elemszam); For i:=2 to ElemSzam do s[i]:=s[i-1] r:=s; TombKiir('Föltöltés azonosakkal'); akozas FeltoltAzonossal Procedure FeltoltVeletlennel; For i:=1 to ElemSzam do s[i]:=random(elemszam) r:=s; TombKiir('Föltöltés véletlenekkel'); akozas FeltoltVeletlennel Procedure FeltoltMajdnemRendezve; i,j,k: Integer; seged: TElem; s[1]:=random(elemszam); For i:=2 to ElemSzam do s[i]:=s[i-1]+random(3) For i:=1 to ElemSzam Div 10 do j:=random(elemszam); Repeat k:=random(elemszam) 7

Until k<>j; seged:=s[j]; s[j]:=s[k]; s[k]:=seged; r:=s; TombKiir('Föltöltés majdnem rendezve'); akozas FeltoltMajdnemRendezve Menüdeklaráció vége Procedure TombKiir(cim: String); Window(1,1,80,25); Az aktív ablakterület GotoXY(((80-length(cim)) Div 2)+2,1); HighVideo; Write(cim); Lowvideo; Window(2,2,78,23); Az aktív ablakterület For i:=1 to ElemSzam do NormVideo; Write(i:5,':'); HighVideo; Write(r[i]:5); TombKiir Procedure akozas; c: Char; Window(1,1,80,25); Az aktív ablakterület Repeat GotoXY(40,24); Write(' '); Delay(100); GotoXY(40,24); Write('/'); Delay (100); GotoXY(40,24); Write('-'); Delay(100); GotoXY(40,24); Write('\'); Delay (100); Until KeyPressed; c:=readkey; Várakozás Procedure Ures; Az üres menüpontokhoz tartozó tevékenység üres Procedure Vege; GotoXY(38,12); Writeln('Vége'); GotoXY(1,24); Delay(1000); Vége Procedure AblakRajzolas(bfx,bfy,hossz,szel: Byte); i: Byte; Window(bfx,bfy,bfx+szel,bfy+hossz); For i:=1 to szel do GotoXY(i,1); Write('-'); GotoXY(i,hossz); Write('-'); 8

For i:=2 to hossz do GotoXY(1,i); Write('-'); GotoXY(szel,i); Write('-'); AblakRajzolás Procedure Menuzes(m: Menu); melyik, szel : Byte; Procedure Help (a : Word); Ablakrajzolas(30,10,13,50); GotoXY(5,5); Write(a); akozas; Window(m.bfx,m.bfy,m.bfx+szel+2,m.bfy+m.db+2); Procedure MenuKiiras(m: Menu); i: Byte; Procedure KepernyoKimentes; KepernyoKimentes Procedure KepernyoVisszamentes; KepernyoVisszamentes Function MaxSzel(m: Menu): Byte; i,j: Byte; j:=length(m.cim); For i:=1 to m.db do If j<length(m.am[i].kerdes) then j:=length(m.am[i].kerdes); MaxSzel:=j MaxSzel MenüKiírás KepernyoKimentes; Verembe!!! szel:=maxszel(m)+1; AblakRajzolas(m.bfx,m.bfy,m.db+2,szel+2); GotoXY(((szel-length(m.cim)) Div 2)+2,1); HighVideo; Write(m.cim); Lowvideo; For i:=1 to m.db do GotoXY(2,i+1); Write(m.am[i].kerdes); GotoXY(m.am[i].sorsz+1,i+1); HighVideo; Write(m.am[i].kerdes[m.am[i].sorsz]); Lowvideo; MenüKiírás Function MenuValasztas(m: Menu): Byte; c : Char; 9

eleg : Boolean; i : Integer; betuk: Set of Char; MenüVálasztás betuk:=[]; For i:=1 to m.db do c:=upcase(m.am[i].kerdes[m.am[i].sorsz]); betuk:=betuk+[c]; i:=1; Highvideo; GotoXY(2,i+1); Write(m.am[i].kerdes); Lowvideo; eleg:=false; Repeat GotoXY(1,1); c:=readkey; Case c of #0 : c:=readkey; Case c of #80 : GotoXY(2,i+1); Write(m.am[i].kerdes); GotoXY(m.am[i].sorsz+1,i+1); HighVideo; Write(m.am[i].kerdes[m.am[i].sorsz]); Lowvideo; i:=i+1; If i>m.db then i:=1; Highvideo; GotoXY(2,i+1); Write(m.am[i].kerdes); Lowvideo; c:=#0; speciális jel #72 : GotoXY(2,i+1); Write(m.am[i].kerdes); GotoXY(m.am[i].sorsz+1,i+1); HighVideo; Write(m.am[i].kerdes[m.am[i].sorsz]); Lowvideo; i:=i-1; If i=0 then i:=m.db; Highvideo; GotoXY(2,i+1); Write(m.am[i].kerdes); Lowvideo; c:=#0; speciális jel #59 : help(m.am[i].segit); case #13 : eleg:=true; #27 : i:=m.db; eleg:=true; case; If not eleg and (Upcase(c) in betuk) then i:=1; While Upcase(c)<>Upcase(m.am[i].kerdes[m.am[i].sorsz]) do Inc(i); eleg:=true; Until eleg; MenuValasztas:=i; MenüVálasztás 10

Menüzés Repeat MenuKiiras(m); melyik:=menuvalasztas(m); m.am[melyik].tevek; Until melyik=m.db; Menüzés A próbához, mint programhoz: Menuzes(FoMenu); End. 11