Algoritmusok pszeudókód... 1



Hasonló dokumentumok
Algoritmusok pszeudókód... 1

Tartalomjegyzék Algoritmusok - pszeudókód

Tartalomjegyzék Algoritmusok - pszeudókód

Algoritmusok - pszeudókód... 1

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

Felvételi tematika INFORMATIKA

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

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

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)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

INFORMATIKA javítókulcs 2016

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

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

3 A C programozási nyelv szintaktikai egységei

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

Rekurzív algoritmusok

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

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

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

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

Megoldott programozási feladatok standard C-ben

Információs Technológia

Adatbázis rendszerek Gy: Algoritmusok C-ben

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

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

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

Vezérlési szerkezetek

2018, Funkcionális programozás

Webprogramozás szakkör

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

Gyakorló feladatok az 1. nagy zárthelyire

Rekurzió. Dr. Iványi Péter

Vezérlési szerkezetek. Szelekció Ciklusok

Programozás alapjai 8.Gy: Program struktúra

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

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

INFORMATIKA tétel 2019

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

A programozás alapjai 1 Rekurzió

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

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

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

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

A C# programozási nyelv alapjai

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

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

Bevezetés a programozásba I.

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

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

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

Szoftvertervezés és -fejlesztés I.

7/8. gyakorlat Karaktertömbök és sztringkezelés

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

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

2018, Diszkrét matematika

Occam 1. Készítette: Szabó Éva

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

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

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

Programozás I. gyakorlat

/* 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 ) ;

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

Babeş-Bolyai Tudományegyetem, Kolozsvár. Informatikai-matematika záróvizsga tankönyv

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

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

C programozási nyelv

Megoldott programozási feladatok standard C-ben

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Bevezetés az algoritmikába

Objektumorientált Programozás III.

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

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás 6. Dr. Iványi Péter

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

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

Számelmélet, műveletek, egyenletek, algebrai kifejezések, egyéb

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Adatszerkezetek és algoritmusok

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

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

BASH script programozás II. Vezérlési szerkezetek

C programozás. 1 óra Bevezetés

Programozási segédlet

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Egyszerű programozási tételek

Programozás I gyakorlat. 10. Stringek, mutatók

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

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

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Babeş-Bolyai Tudományegyetem, Kolozsvár. Informatika záróvizsga tankönyv

6. A Pascal nyelv utasításai

Á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... 15 Párok sorszáma egy sorozatban... 15 Arány... 16 Teljes négyzet... 16 Osztályátlagok szétválasztása... 17 Bűvös négyzet... 18 Polinom értéke adott pontban... 19 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... 22 Beszúró rendezés... 22 Leszámláló rendezés... 22 Összefésülésen alapuló rendezés... 23 Gyorsrendezés (QuickSort)... 24 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... 27 Á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... 32 Á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)... 36 Összegkifizetés legkevesebb számú bankjeggyel (Greedy)... 36 A C nyelv elemei... 38 Azonosítók... 38 A programok felépítése... 39 Az alapértelmezett egyszerű típusok... 39 Egész jellegű típusok... 40 Valós típus... 40 A void típusnév... 41 Változók... 41 Változók deklarálása... 42 Egész jellegű változók deklarálása... 42

Valós típusú változók deklarálása... 42 Konstansok (állandók)... 43 Egész konstansok... 43 Karakter konstansok... 43 Karakterlánc konstansok... 43 Adatok beolvasása és kiírása... 44 Karakter beolvasása a standard bemenetről... 44 Karakter kiírása a standard kimenetre... 44 Egy karakter beolvasása közvetlenül... 45 Formázott kiírás a standard kimenetre... 45 Formázott beolvasás a standard bemenetről... 46 Egyszerű programok készítése... 47 Téglalap területe és kerülete... 47 Inkrementáló és dekrementáló operátorok... 48 Bitműveletek... 49 A C nyelv utasításai... 50 A kifejezés utasítás... 50 Az összetett utasítás... 50 Feltételes utasítások... 50 Az if utasítás... 51 Valós szám abszolút értéke... 51 Páros páratlan számok megállapítása... 51 Nagyobbik szám kiválasztása... 52 Nagybetű, kisbetű vagy szám... 53 A switch utasítás... 53 Aritmetikai műveletek... 54 Az év hányadik napja... 55 Ciklus utasítások... 57 Az elöltesztelő ciklus... 57 A hátultesztelő ciklus... 57 A számlálós ciklus... 58 Szám számjegyeinek száma... 58 Törzstényezőkra való bontás... 59 Legnagyobb közös osztó (Eukleidész algoritmusa)... 60 P számrendszerből q számrendszerbe... 61 Faktoriális... 62 Prímszám vizsgálat... 63 Fibonacci sorozat n-dik eleme... 63 Polinom értéke egy x pontban (Horner-séma)... 64

A tömbök... 66 A tömb fogalma... 66 Egydimenziós tömbök... 66 Számsorozat fordított sorrendben... 67 Két polinom szorzata... 67 Kezdőértekkel rendelkező egydimenziós tömbök... 68 Többdimenziós tömbök... 68 Tömb szimmetriája... 69 Mátrix szorzata vektorral... 70 Kát matrix szorzata... 71 Mátrix inverze... 72 Karaktertömbök... 74 Karakterláncok beolvasása a standard bemenetről... 75 Karakterláncok kiírása a standard kimenetre... 76 Karakterlánc konverziós műveletek... 76 Numerikus értékek karakterlánccá alakítása... 76 Karakterlánc numerikus értékekké alakítása... 76 Más konvertáló függvények... 76 Karakterlánc kezelő függvények... 77 Betük frekvenciája egy sorban... 78 Dinamikus tömbök... 79 Vektor páros elemeinek összege... 79 Mátrix páratlan elemeinek összege... 80 Az előfeldolgozó parancsok... 81 Állományok beillesztése... 81 Makrók... 81 Feltételes fordítás makró létezéstől függően... 82 Feltételes fordítás makró nem-létezéstől függően... 82 Feltételes fordítás... 83 Fordítási hibaüzenet generálása... 83 Függvények... 84 A függvény fogalma... 84 Függvény deklarációja... 84 Függvény definiciója... 85 Paraméterátadás... 85 Tömb paraméterek... 86 Faktoriális... 87 Goldbach-feltétel... 87

Legnagyobb közös osztó... 89 Bonyolultabb adatszerkezetek... 90 Struktúrák... 90 Kezdőértékkel rendelkező struktúrák... 91 Tanuló adatai... 91 Saját típusok definiálása... 93 Állományok... 95 Állomány megnyitása... 95 Állomány bezárása... 96 Írás állományba... 96 Karakter írása állományba... 96 Karakterlánc írása állományba... 96 Formázott írás állományba... 97 Olvasás állományból... 97 Karakter olvasása állományól... 97 Karakterlánc olvasása állományból... 97 Formázott olvasás állományból... 98 Állomány végének az ellenőrzése... 98 Pozicionálás az állományban... 98 Szöveges állomány feldolgozása (feladat1)... 99 Szöveges állomány feldolgozása (feladat2)... 100 Szöveges állomány feldolgozása (feladat3)... 101 Klasszikus algoritmusok... 103 Kereső algoritmusok... 103 Lineáris keresés... 103 Bináris keresés... 104 Rendező aloritmusok... 105 Buborékrendezés... 105 Minimumkiválasztásos rendezés... 106 Beszúrásos rendezés... 106 Összefésülések... 107 Összefésülés strázsa (ütköző) nélkül... 107 Összefésülés strázsával (ütközővel)... 110 Rekurzió... 112 Közvetlen rekurzió... 112 Szó betűi fordított sorrendben... 112

Faktoriális... 113 Fibonacci sorozat n-edik eleme... 113 Legnagyobb közös osztó... 114 Ackermann függvény... 115 X n -diken kiszámítása... 115 Tizes számrendszerből való átírás p számrendszerbe... 116 Az első n páratlan természetes szám összege... 117 Természetes szám számjegyeinek összege... 117 N természetes szám összege... 118 Tömbök rekurzívan... 119 Számsorozat negatív elemeinek száma... 119 Szám előfordulása egy tömbben... 120 Páros elemek összege... 121 Rekurzív szerkezetű eredményt igénylő feladatok... 122 N hosszúságú megadott karakterlánc... 122 Természetes szám particiói... 123 Az Oszd meg és uralkodj módszer... 124 Sorozat legnagyobb elem... 124 N szám szorzata... 125 Bináris keresés... 126 Hanoi tornyok... 127 QuickSort... 128 MergeSort... 130 Kombinatorikai feladatok... 132 Permutációk... 132 Variációk... 133 Kombinációk... 134 A dinamikus adatszerkezetek... 136 Szimplán láncolt lista... 136 Lista létrehozása... 137 Lista elemeinek a kiírása... 137 Egy új elem beszúrása a listába... 137 Egy elem törlése a listaból... 138 Megoldott listás feladat... 138

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! bemeneti adat: n és a számok, kimeneti adat: 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 C nyelv utasításai A kifejezés utasítás A kifejezés utasítás végrehajtása a kifejezésnek a megfelelő szabályok szerinti kiértékelését jelenti. Mielőtt a következő utasításra adódik a vezérlés, a teljes kiértékelés (a mellékhatásokkal együtt) végbemegy. Példák: kerulet = x + y + b; j++; a = b = c = 3; z = cos (alfa) + 1.35 //értékadás //j növelése 1-gyel //többszörös értékadás //függvényt hívó kifejezés Az összetett utasítás Programjainkban nagyon gyakran használjuk az összetett utasítást. Az összetett utasítás a és az között megadott utasítások sorozatából áll. Ezt az utasítást olyan helyen használjuk, ahol egynél több utasítás végrehajtására van szükség, de a szintaxis csak egy utasítás használatát engedélyezi. Az összetett utasítás általános szintaxisa: lokális definíciók és deklarációk; utasítás1; utasítás2;... utasításn; Feltételes utasítások A programok végrehajtása során sokszor szükségünk van arra, hogy bizonyos feltételektől függően a számítógép a program különböző részeit (ágait) hajtsa végre. Tehát ha a feltétel teljesül, a program egy bizonyos műveletsort végez, különben egy másikat. Ezt a feltételes vagy döntéshozó utasításokkal (válogatással, szelekcióval) valósítjuk meg. 50

Az if utasítás A legegyszerűbb feltételes utasítás az if, amely a kétágú döntésnek felel meg. Az utasítás általános formája: if (kifejezés) utasítás1; utasítás2; Az if utasítás végrehajtása a kifejezés kiértékelésével kezdődik. A kifejezés általában egy logikai kifejezés, amelynek ha értéke 1 vagy ennél nagyobb egész szám, az utasítás1 hajtódik végre, különben (ha a kifejezés értéke 0) az utasítás2 kerül végrehajtásra. Valós szám abszolút értéke #include <stdio.h> #include <conio.h> main() int x, abs; printf("\n Kerem a szamot:"); scanf("%d", &x); if (x >= 0) abs = x; abs = -x; printf("a szam abszolut erteke: %d",abs); getch(); Páros páratlan számok megállapítása Állapítsuk meg egy számról, hogy páros vagy páratlan! #include <stdio.h> #include <conio.h> main() int szam; 51

printf("\nkerek egy egesz szamot:"); scanf("%d", &szam); if (szam % 2!= 0) printf("\nparatlan!"); printf("\nparos!"); getch(); Nagyobbik szám kiválasztása Olvassunk be három egész számot, majd megfelelő szöveg kíséretében írjuk ki a nagyobbikat! #include <stdio.h> #include <conio.h> main() double szam1, szam2, szam3, max; printf("\n Az elso szam: "); scanf("%lf",&szam1); printf("\n A masodik szam: "); scanf("%lf",&szam2); printf("\n A harmadik szam : "); scanf("%lf",&szam3); if (szam1 > szam2) if (szam1 > szam3) max = szam1; max = szam3; if (szam2 > szam3) max = szam2; max = szam3; printf("a nagyobbik szam: %lf\n", max); getch(); 52

Rekurzió Közvetlen rekurzió A közvetlen rekurzió a leggyakoribb. Ebben az esetben az adott függvény blokkjában explicit módon meghívjuk az illető függvényt. Egy rekurzív függvény végrehajtása azonos módon történik, mint bármely nem rekurzív függvényé. Egy rekurzív függvény a következőképpen hajtódik végre: a függvény első aktiválása során végrehajtódnak az utasítások a folytatási / leállási feltételig; kiértékelődik a feltétel és amíg ennek a logikai értéke azt jelenti, hogy a függvénynek meg kell hívja önmagát, akkor a függvény aktiválásainak sora következik, ami azt jelenti, hogy végre lesz hajtva a függvénynek a feltételig tartó része, valamint az újrahívás; amikor a feltétel azt jelenti, hogy a függvénynek nem kell többé önmagát meghívja, akkor, ismételten, a hívásokhoz viszonyítva fordított sorrendben, végrehajtódik a függvény hívása / önmeghívása utáni rész. Szó betűi fordított sorrendben Írjuk ki egy szó betűit fordított sorrendben! A szó végét egy szóközzel jelöljük. Ne használjunk a megoldásban tömböt és karakterláncot! #include <stdio.h> #include <conio.h> void fordit() char betu; scanf("%c", &betu); if (betu!= ' ') fordit(); printf("%c", betu); void main() printf("a szo: "); 112

fordit(); getch(); return; Faktoriális Írjunk rekurzív függvényt, amely kiszámítja az n! -t! #include <stdio.h> #include <conio.h> long int fakt(int n) if (n == 0) return 1; return n * fakt(n - 1); void main() int n; printf("n = "); scanf("%d", &n); printf("n!= %ld", fakt(n)); getch(); return; Fibonacci sorozat n-edik eleme Határozzuk meg a Fibonacci sorozat n-edik elemét! #include <stdio.h> #include <conio.h> long int fibo(int n) if (n == 1 n == 2) return 1; 113

return fibo(n - 1) + fibo(n - 2); void main() int n; printf("n = "); scanf("%d", &n); printf("%ld", fibo(n)); getch(); return; Legnagyobb közös osztó Olvassunk be két természetes számot, majd számítsuk ki rekurzívan a két szám legnagyobb közös osztóját (a, b N*)! #include <stdio.h> #include <conio.h> int lnko(int a, int b) if (b % a == 0) return a; return lnko(a, b % a); void main() int a, b; do printf("a, b = "); scanf("%d%d", &a, &b); while (a < 0 b < 0); printf("lnko(%d, %d) = %d ", a, b, lnko(a, b)); getch(); return; 114

Az Oszd meg és uralkodj módszer Ezt a módszert sikeresen lehet alkalmazni az informatikában. A módszer lényege az, hogy a feladatot egymástól független részfeladatokra bontjuk, amelyeket az eredeti feladathoz hasonlóan oldunk meg, de kisebb méretű adatok esetében. A módszer lépéseit a következőképpen foglalhatjuk össze: A feladatot kettő vagy több, hasonló egymástól független jellegű részfeladatra bontjuk. A részfeladatok lehetnek elemi vagy nem elemi részfeladatok. Az elemi részfeladatokat megoldjuk, a nem elemieket pedig újabb elemi, vagy nem elemi részfeladatokra bontjuk. Ezt a műveletet addig folytatjuk, ameddig elemi részfeladatokhoz jutunk. Az eredményt úgy kapjuk, hogy az egyes részfeladatokat a felosztás fordított sorrendjében összerakjuk, összekombináljuk. Sorozat legnagyobb elem Határozzuk meg n egész szám közül a legnagyobbat az oszd meg és uralkodj módszerrel! #include <stdio.h> #include <conio.h> int x[100], n, i; int maximum(int bal, int jobb) int max1, max2, kozepe; if (bal == jobb) return x[bal]; if (jobb - bal == 1) if (x[bal] < x[jobb]) return x[jobb]; return x[bal]; 124

kozepe = (bal + jobb) / 2; max1 = maximum(bal, kozepe); max2 = maximum(kozepe + 1, jobb); if (max1 < max2) return max2; return max1; void main() printf("n = "); scanf("%d", &n); printf("adjuk meg a szamokat!\n"); for (i = 0; i < n; i++) printf("az %d.elem: ", i); scanf("%d", &x[i]); printf("a legnagyobb szam : %d", maximum(0, n - 1)); getch(); return; N szám szorzata Számítsuk ki n valós szám szorzatát oszd meg és uralkodj módszerrel! #include <stdio.h> #include <conio.h> int x[100], n, i; int szorzas(int bal, int jobb) int sz1, sz2, kozepe; if (bal == jobb) return x[bal]; 125