Algoritmusok - pszeudókód... 1



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

Tartalomjegyzék Algoritmusok - pszeudókód

Algoritmusok pszeudókód... 1

Tartalomjegyzék Algoritmusok - pszeudókód

Algoritmusok pszeudókód... 1

Felvételi tematika INFORMATIKA

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

6. A Pascal nyelv utasításai

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

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

INFORMATIKA javítókulcs 2016

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

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

2018, Funkcionális programozás

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

Bevezetés a programozásba I.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

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

A félév során előkerülő témakörök

Rekurzív algoritmusok

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

Gyakorló feladatok az 1. nagy zárthelyire

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

Programozási segédlet

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

3 A C programozási nyelv szintaktikai egységei

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

Java II. I A Java programozási nyelv alapelemei

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Ajánlott elemi feladatok az AAO tárgyhoz 41 feladat

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

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

1. Jelölje meg az összes igaz állítást a következők közül!

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Megoldott feladatok. Informatika

Bevezetés a programozásba I.

Egyszerű programozási tételek

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

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

Objektum Orientált Programozás VII.

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

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

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

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

7. Strukturált típusok

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

2018, Diszkrét matematika

Hatványozás. A hatványozás azonosságai

ELEMI PROGRAMOZÁSI TÉTELEK

Programozási tételek. Dr. Iványi Péter

7. gyakorlat Sorozatok, Fájlkezelés

BABEŞ-BOLYAI TUDOMÁNYEGYETEM KOLOZSVÁR. Informatika záróvizsga tankönyv

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

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

PASzSz. Dr. Kotsis Domokos

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Algoritmusok vektorokkal keresések 1

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

BASH SCRIPT SHELL JEGYZETEK

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Összetett programozási tételek

10. gyakorlat Tömb, mint függvény argumentum

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

A C programozási nyelv I. Bevezetés

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

A C programozási nyelv I. Bevezetés

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

BME MOGI Gépészeti informatika 5.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

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

Függvény fogalma, jelölések 15

INFORMATIKA tétel 2019

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

Programozás alapjai 9.Gy: Struktúra 2.

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

Algoritmuselmélet 2. előadás

2.6. Utasítások használata

Java II. I A Java programozási nyelv alapelemei

14. Mediánok és rendezett minták

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

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

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

INFORMATIKAI ALAPISMERETEK

1. Alapok. #!/bin/bash

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Matematika. 1. évfolyam. I. félév

Delphi programozás III.

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Egész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...

Követelmény a 7. évfolyamon félévkor matematikából

Átírás:

Tartalomjegyzék Algoritmusok - pszeudókód... 1 Abszolút érték... 1 Hányados ismételt kivonással... 1 Legnagyobb közös osztó... 1 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 2 Minimum keresés... 3 Maximum keresés... 3 Eukleidész algoritmusa... 4 Prímszámok... 4 Fibonacci-számok... 5 Háromszög... 5 Fordított szám... 6 Törzstényezők... 7 Prímszámvizsgálat... 7 Konverzió Számrendszer átalakítás... 9 Gyors hatványozás...10 Szekvenciális (lineáris) keresés...10 Megszámlálás... 11 Minimum- és maximumkiválasztás... 11 A Maximum helye... 11 Kiválogatás... 11 Szétválogatás... 12 Sorozat halmazzá alakítása... 13 Sorozatok keresztmetszete... 13 Sorozatok egyesítése... 14 Sorozatok összefésülése... 14 Párok sorszáma egy sorozatban... 15 Arány... 16 Teljes négyzet... 16 Osztályátlagok szétválasztása... 16 Bűvös négyzet... 17 Polinom értéke adott pontban... 18 Polinomok összege... 19 Polinomok szorzata... 19 Buborékrendezés (Bubble-sort)... 20

Egyszerű felcseréléses rendezés... 21 Válogatásos rendezés... 21 Minimum/maximum kiválasztásra épülő rendezés... 21 Beszúró rendezés... 22 Leszámláló rendezés... 22 Összefésülésen alapuló rendezés... 23 Gyorsrendezés (QuickSort)... 23 Szavak sorrendjének megfordítása... 24 Faktoriális... 25 Számjegyösszeg... 25 k elemű részhalmazok... 25 Konverzió... 26 Az {1, 2,..., n} halmaz minden részhalmaza... 26 Kamatos kamatok kiírása... 26 Általános backtracking... 27 Általános rekurzív backtracking... 28 Elhelyezni 8 királynőt a sakktáblán... 28 Zárójelek... 29 Játékok dobozva való elhelyezésének kiírása... 30 X pénzösszeg kifizetése n bankjegy segítségével... 31 X Összeg kifizetése, minimum számú bankjeggyel... 31 Általános Divide Et Impera... 32 Szorzat (DivImp)... 33 Minimumszámolás (DivImp)... 33 Hatványozás (DivImp)... 34 Bináris keresés (DivImp)... 34 Általános mohó (Greedy) algoritmus... 35 Összeg (Greedy)... 35 Hátizsák probléma (Greedy)... 35 Összegkifizetés legkevesebb számú bankjeggyel (Greedy)... 36 A Pascal nyelv elemei... 37 Azonosítók... 37 Alapértelmezett egyszerű típusok... 38 Változók... 38 Sorszámozott típusú változók deklarálása... 38 Nem sorszámozott típusú változók deklarálása... 39 Konstansok... 40 Egész típusú konstansok... 40 Valós típusú konstansok... 40 Karakter és karakterlánc típusú konstansok... 41

Logikai konstansok... 41 Kezdőértékkel rendelkező változók... 41 Adatok beolvasása és kiírása... 42 Szabványos függvények és eljárások... 42 Matematikai függvények és eljárások... 42 Sorszámozott típusú adatokra vonatkozó függvények és eljárások... 44 Egyszerű programok készítése... 46 Kifejezések... 46 Bitszintű műveletek... 47 Relációs műveletek... 47 Pascal nyelvű programozás... 48 Döntések... 48 Nagyobbik szám kiírása... 48 Csökkenő sorrend létrehozása... 48 Római szám felismerése... 49 Római szám felismerése (case utasítással)... 50 Kis- nagybetű vagy más karakter... 51 Jegyértékelés... 51 Hónapok napjainak száma... 52 Ciklusok... 53 Legnagyobb közös osztó (Eukleidész algoritmus)... 53 Prímszámvizsgálat... 53 Szám számjegyeinek száma... 54 Törzstényezőkre való bontás... 55 N szám összege... 55 Fibonacci sorozat n-edik eleme... 56 Egydimenziós tömbök... 57 Átlagos jegynél kisebbek kiírása... 57 Számsorozat kiírása fordítva... 57 Sorozatból való teljes négyzetek összege... 58 Karakterláncban felmerülő betük száma... 59 Két polinom szorzata... 60 Kétdimenziós tömbök... 61 Két félévi átlagok... 61 Négyzetes mátrix szimmetriája... 62 Mátrix páros sorai elemeinek középarányosa... 63 Karakterláncok... 64 Relációs műveletek karakterláncokkal... 65

Karakterlánc kezelő függvények... 65 Karakterláncokat feldolgozó eljárások... 66 Szóköz törlése egy karakterláncból... 67 Karakterláncban folytatott szócsere... 67 Halmazok... 68 Műveletek halmazokkal... 69 Halmazokra vonatkozó relációk és vizsgálatok... 69 Egy halmaz elemeinek a kiírása... 70 Karakterlánc betűinek kiírása ábécésorrendben... 70 Erasztotenész algoritmusa (prímszámok)... 70 Rekord vagy bejegyzés típusok... 71 Alkalmazottak adatainak nyilvántartása... 72 Kereső algoritmusok... 74 Lineáris keresés... 74 Bináris keresés... 74 Rendező algoritmusok... 76 Buborékrendezés... 76 Minimumkiválasztásos rendezés... 77 Beszúrásos rendezés... 77 Összefésülések... 78 Összefésülés strázsa (ütköző) nélkül... 78 Összefésülés strázsával (ütközővel)... 80 Rekurzivitás... 82 Faktoriális kiszámítása... 82 Fibonacci sorozat n-edik eleme... 82 Két szám legnagyobb közös osztója... 83 Hatványozás... 84 10-es számrendszerből való alakítás... 85 Első n páratlan szám összege... 85 Természetes szám számjegyeinek összege... 86 Számsorozat negatív elemeinek száma... 87 Szám előfordulása egy sorozatban... 88 Vektor páros elemeinek összege... 89 Sorozat legnagyobb prímszáma... 90 N hosszúságú a és b karakterű sorozatok... 91 Természetes szám particiói... 92 Labirintus-feladatok... 93 Oszd meg és uralkodj Divide Et Impera... 97

Sorozat legnagyobb száma... 97 N valós szám szorzata... 98 Keresés számsorozatban... 98 Hanoi tornyok... 100 QuickSort... 100 MergeSort... 102 Kombinatorikus feladatok... 104 Permutációk... 104 iációk... 105 Kombinációk... 106 Listák... 108 Lista tartalmának kiírása... 108 Listákat kezelő eljárások és függvények... 108 Lista k.-adik elemének kiírása... 109 Lista bővítése rendezetten... 109 Két rendezett lista összefésülése... 112 Verem... 115 Szöveges állományok... 117 Állomány megnyítása... 117 Állomány bezárása... 118 Írás állományba... 118 Olvasás állományból... 119 Szöveges állományok feldolgozása... 120 Hibakezelés... 120 A sor végének az ellenőrzése... 121 Az állomány végének az ellenőrzése... 121 Gráfok... 123 Irányított és nem irányított gráfok... 123 Definíciók... 123 Dijkstra-algoritmus... 125 Floyd-algoritmus...128 Minimális értékű Hamilton-kör bejárása... 130 Szélességi bejárás... 131 Keresési fa... 133

Algoritmusok - pszeudókód Abszolút érték Határozzuk meg és írjuk ki adott valós szám abszolút értékét! Algoritmus Abszolút_érték(x,mod): Ha x 0 akkor mod x különben mod -x vége(ha) Vége(algoritmus) {bemeneti adat: x, kimeneti adat: mod} Hányados ismételt kivonással Számítsuk ki két természetes szám egész hányadosát ismételt kivonásokkal! Algoritmus Osztás(a,b,hányados): hányados 0 Amíg a b végezd el: hányados hányados + 1 a a - b vége(amíg) Vége(algoritmus) {bemeneti adatok:a, b, kimeneti adat:hányados} Legnagyobb közös osztó Számítsuk ki két természetes szám legnagyobb közös osztóját! Algoritmus Eukleidész(a,b,lnko): Ismételd r maradék[a/b] a b b r ameddig r = 0 lnko a Vége(algoritmus) {bemeneti adatok: a, b, kimeneti adat: lnko} {kiszámítjuk az aktuális maradékot} {az osztandót felülírjuk az osztóval} {az osztót felülírjuk a maradékkal} {amikor a maradék 0, véget ér az algoritmus} {lnko egyenlő az utolsó osztó értékével} 1

Páros számok szűrése Számoljuk meg n beolvasott szám közül a páros számokat! {bemenet n és a számok, kimenet: db, a páros számok száma} Algoritmus Páros(n,db): db 0 Minden i=1,n végezd el: Be: szám Ha szám páros akkor db db + 1 vége(ha) vége(minden) Vége(algoritmus) Palindrom számok Döntsük el egy adott számról, hogy palindromszám-e vagy sem! Algoritmus Palindrom(szám,válasz): másolat szám újszám 0 Amíg szám > 0 végezd el: számjegy maradék[szám/10] újszám újszám*10 + számjegy szám [szám/10] vége(amíg) válasz újszám = másolat Vége(algoritmus) {bemeneti adat: szám, kimeneti adat: válasz} {ha újszám = másolat, akkor válasz értéke igaz} {ha újszám másolat, akkor válasz értéke hamis} Orosz szorzás Legyen a, b N *. Számítsuk ki a és b szorzatát! Algoritmus Orosz_szorzás(a,b,p): x a {bemeneti adatok: a, b} y b {kimeneti adat: p} p 0 2

Amíg x > 0 végezd el: {xy + p = ab (*)} Ha x páratlan akkor p p + y vége(ha) x [x/2] y y + y vége(amíg) Vége(algoritmus) Minimum keresés Határozzuk meg egy n elemű sorozat minimumát! Algoritmus Minimum(n,a,min): min a1 Minden i=2,n végezd el: Ha ai < min akkor min ai vége(ha) vége(minden) Vége(algoritmus) Maximum keresés Írjuk ki három, páronként különböző valós szám közül a legnagyobbat! Algoritmus Maximum(a,b,c): Ha (a > b) és (a > c) akkor {bemeneti adatok: a, b, c} Ki: 'A legnagyobb: ', a vége(ha) Ha (b > c) és (b > a) akkor Ki: 'A legnagyobb: ', b vége(ha) Ha (c > a) és (c > b) akkor Ki: 'A legnagyobb: ', c vége(ha) Vége(algoritmus) 3

A Pascal nyelv elemei Azonosítók A Pascalban használt azonosítók szerepe hasonlít az algoritmusoknál bemutatottakéhoz. Az azonosítók az angol ábécé kis- és nagybetűiből, számokból és az aláhúzásjelből állhatnak, azzal a kikötéssel, hogy első karakterük nem lehet számjegy, és hosszuk nem haladhatja meg a 63 karaktert. Ajánlatos az úgynevezett beszédes azonosítók használata, amelyek az általuk képviselt jelentésre utalnak. Például előnyös, ha egy minimumot kereső program neve minimum, vagy ha egy hatványt megőrző változó neve hatvany, és nem x. Azonosítóként sosem használhatunk kulcsszavakat. Példák azonosítókra: minimum x _x1 matrix _1a alfa sebesseg Mivel a Pascal-fordító nem tesz különbséget a kis- és a nagybetűk között, a következő azonosítók egyenértékűek az előbbiekkel: Minimum X _X1 MatriX _1A ALFA SEBESSEG Hibás azonosítók: 1x { nem kezdődhet számmal } a b { nem tartalmazhat - karaktert } m i n { nem lehetnek benne szóközök } összead { nem tartalmazhat ékezetes betűt } 37

Alapértelmezett egyszerű típusok A Pascal nyelv a következő egyszerű típusokat használja: sorszámozott típusok: egész, logikai, karakter, felsorolt, résztartomány; nem sorszámozott típusok: valós, karakterlánc. Változók A deklarációban a változó nevét és típusát kettőspont választja el egymástól, a típust pontosvessző követi. Ha több változóhoz is ugyanazt a típust szeretnénk rendelni, akkor ezek nevét vesszővel kell elválasztanunk egymástól. Például: a, b: Byte; c: Char; Sorszámozott típusú változók deklarálása egész típusú változók deklarálása: a: Byte; osszeg: Integer; i, j: Word; x: Shortint; eredmeny: Longint; logikai típusú változók deklarálása: b: Boolean; karakter típusú változók deklarálása: c: Char; betu: Char; felsorolt típusú változók deklarálása: nyelvek: (angol, nemet, roman, magyar, latin); 38

napok: (hetfo, kedd, szerda, csutortok, pentek, szombat, vasarnap); Látható, hogy ékezetes betűk nem szerepelhetnek a felsorolásban. Ezeknek az azonosítóknak a deklarációs részben egyedieknek kell lenniük. Nem lehet például német nevű azonosítónk, és az angol nem szerepelhet egynél több felsorolásban. Helytelenek tehát a következő deklarációk: nyelvek: (angol, nemet, roman, magyar, latin); kedvenc: (angol, nemet); résztartomány típusú változók deklarálása: szamok: 0..9; kisbetuk: 'a'..'z'; nagybetuk: 'A'..'Z'; munkanapok: hetfo..pentek; Hibásak például a következő deklarációk: napok = hetfo..vasarnap; kisbetuk: Char; x, kisbetuk: Byte; Nem sorszámozott típusú változók deklarálása valós típusú változók deklarálása: a, b: Real; illetve: {$N+} a, b: Double; osszeg: Extended; karakterlánc típusú változók deklarálása: nev: string; A példában a csnev maximális hossza 20 karakter, a knev-é pedig 15 karakter. 39

Pascal nyelvű programozás Döntések Nagyobbik szám kiírása Olvassunk be két egész számot, majd megfelelő szöveg kíséretében írjuk ki a nagyobbikat! Program maximum; szam1, szam2, max: Integer; WriteLn; Write('Az elso szam: '); ReadLn(szam1); Write('A masodik szam: '); ReadLn(szam2); If szam1 > szam2 Then max := szam1 max := szam2; WriteLn('A nagyobbik szam: ', max); ReadLn; End. Csökkenő sorrend létrehozása Olvassunk be három egész számot, majd írjuk ki ezeket csökkenő sorrendben! Program csokkeno_sorrend; szam1, szam2, szam3: Integer; WriteLn; Write('Az elso szam: '); ReadLn(szam1); Write('A masodik szam: '); ReadLn(szam2); Write('A harmadik szam: '); 48

ReadLn(szam3); Write('A szamok csokkeno sorrendben: '); If szam1 > szam2 Then If szam1 > szam3 Then If szam2 > szam3 Then WriteLn(szam1, ' ', szam2, ' ', szam3) WriteLn(szam1, ' ', szam3, ' ', szam2) WriteLn(szam3, ' ', szam1, ' ', szam2) If szam2 > szam3 Then If szam1 > szam3 Then WriteLn(szam2, ' ', szam1, ' ', szam3) WriteLn(szam2, ' ', szam3, ' ', szam1) WriteLn(szam3, ' ', szam2, ' ', szam1); ReadLn; End. Római szám felismerése Olvassunk be egy karaktert, amely egy római számjegynek felel meg, majd írjuk ki a neki megfelelő arab számot! Ha a karakter nem római számjegy, írjunk ki hibaüzenetet! Program romai; c: Char; WriteLn; Write('Kerem a romai szamjegyet: '); ReadLn(c); Write('Az arab szam: '); If c = 'I' Then Write(1) If c = 'V' Then Write(5) 49

If c = 'X' Then Write(10) If c = 'L' Then Write(50) If c = 'C' Then Write(100) If c = 'D' Then Write(500) If c = 'M' Then Write(1000) Write('Nem romai szamjegy.'); ReadLn; End. Római szám felismerése (case utasítással) Program romai_case; c: Char; WriteLn; Write('Kerem a romai szamjegyet: '); ReadLn(c); Write('Az arab szam: '); Case c Of 'I' : Write(1); 'V' : Write(5); 'X' : Write(10); 'L' : Write(50); 'C' : Write(100); 'D' : Write(500); 'M' : Write(1000); Write('Nem romai szamjegy.'); End; ReadLn; End. 50

Oszd meg és uralkodj Divide Et Impera Sorozat legnagyobb száma Program maximumszamias_oszd_meg_es_uralkodjal; x: array[1..20] of Integer; i, n: Byte; Function maximum(bal, jobb: Byte): Integer; max1, max2: Integer; kozepe: Byte; If bal = jobb Then maximum := x[bal] kozepe := (bal + jobb) div 2; max1 := maximum(bal, kozepe); max2 := maximum(kozepe + 1, jobb); If max1 < max2 Then maximum := max2 maximum := max1; End; End; Write('n = '); ReadLn(n); Write('A szamok: '); For i := 1 To n Do Read(x[i]); ReadLn; WriteLn('Maximum: ', maximum(1,n)); ReadLn; End. 97

N valós szám szorzata Számítsuk ki n valós szám szorzatát oszd meg és uralkodj módszerrel! Program szorzas_oszd_meg_es_uralkodjal; x: array[1..20] of Integer; i, n: Byte; Function szorzas(bal, jobb: Byte): Integer; sz1, sz2: Integer; kozepe: Byte; If bal = jobb Then szorzas := x[bal] kozepe := (bal + jobb) div 2; sz1 := szorzas(bal, kozepe); sz2 := szorzas(kozepe + 1, jobb); szorzas := sz1 * sz2; End; End; Write('n = '); ReadLn(n); Write('A szamok: '); For i := 1 To n Do Read(x[i]); ReadLn; WriteLn('A szamok szorzata: ', szorzas(1,n)); ReadLn; End. Keresés számsorozatban Olvassunk be egy rendezett számsorozatot, és keressünk meg benne egy beolvasott számot! Ha megtaláltuk írjuk ki a pozícióját. Alkalmazzuk a bináris keresés módszerét! 98

Program binaris_kereses; x: array[1..20] of Integer; ker: Integer; i, n: Byte; Procedure bin_kereses(bal, jobb: Byte); kozepe: Byte; If bal > jobb Then WriteLn(ker,' nincs az adott sorozatban'); Exit; End; kozepe := (bal + jobb) div 2; If ker = x[kozepe] Then WriteLn(ker,' a(z) ',kozepe,'h. talalhato') If ker < x[kozepe] Then bin_kereses(bal, kozepe - 1) bin_kereses(kozepe + 1, jobb); End; Write('n = '); ReadLn(n); Write('A novekvo sorozat: '); For i:=1 To n Do Read(x[i]); Write('Keresett szam: '); ReadLn(ker); bin_kereses(1,n); ReadLn; End. 99