Algoritmusok pszeudókód... 1



Hasonló dokumentumok
Tartalomjegyzék Algoritmusok - pszeudókód

Algoritmusok pszeudókód... 1

Tartalomjegyzék Algoritmusok - pszeudókód

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

Algoritmusok - pszeudókód... 1

Felvételi tematika INFORMATIKA

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

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)

Rekurzív algoritmusok

3 A C programozási nyelv szintaktikai egységei

INFORMATIKA javítókulcs 2016

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

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

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

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

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

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

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

Információs Technológia

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

Megoldott programozási feladatok standard C-ben

Rekurzió. Dr. Iványi Péter

Gyakorló feladatok az 1. nagy zárthelyire

2018, Funkcionális programozás

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Webprogramozás szakkör

A programozás alapjai 1 Rekurzió

INFORMATIKA tétel 2019

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

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

Vezérlési szerkezetek

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

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

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

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

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

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

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

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

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

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

Vezérlési szerkezetek. Szelekció Ciklusok

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

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

Bevezetés a programozásba I.

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

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

2018, Diszkrét matematika

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

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

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

C programozási nyelv

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

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

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

Bevezetés az algoritmikába

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

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

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

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

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

2015, Diszkrét matematika

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

A C# programozási nyelv alapjai

Programozás I. gyakorlat

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

4. Előfeltételek (ha vannak) 4.1 Tantervi Nincs 4.2 Kompetenciabeli Feladatok kijelentéseinek megértése

Adatszerkezetek és algoritmusok

Programozas 1. Strukturak, mutatok

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

Programozási segédlet

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

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

INFORMATIKA tétel 2018

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

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

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

Programozási nyelvek Python

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

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

C programozás. 1 óra Bevezetés

Programozás alapjai 1.Gy: Algoritmizálás P R O

Megoldott programozási feladatok standard C-ben

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

Szoftvertervezés és -fejlesztés I.

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

Adatszerkezetek II. 10. előadás

7. gyakorlat Sorozatok, Fájlkezelés

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

Á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ó... 2 Páros számok szűrése... 2 Palindrom számok... 2 Orosz szorzás... 3 Minimum keresés... 4 Maximum keresés... 4 Eukleidész algoritmusa... 5 Prímszámok... 5 Fibonacci-számok... 6 Háromszög... 7 Fordított szám... 8 Törzstényezők... 9 Prímszámvizsgálat... 9 Konverzió Számrendszer átalakítás... 10 Gyors hatványozás... 12 Szekvenciális (lineáris) keresés... 12 Megszámlálás... 13 Minimum- és maximumkiválasztás... 13 A Maximum helye... 13 Kiválogatás... 14 Szétválogatás... 14 Sorozat halmazzá alakítása... 15 Sorozatok keresztmetszete... 15 Sorozatok egyesítése... 17 Sorozatok összefésülése... 17 Párok sorszáma egy sorozatban... 18 Arány... 19 Teljes négyzet... 19 Osztályátlagok szétválasztása... 19 Bűvös négyzet... 21 Polinom értéke adott pontban... 22 Polinomok összege... 22

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

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

Fibonacci sorozat n-dik eleme... 76 Polinom értéke egy x pontban (Horner-séma)...77 A tömbök... 78 A tömb fogalma... 78 Egydimenziós tömbök... 78 Számsorozat fordított sorrendben... 79 Két polinom szorzata... 80 Kezdőértekkel rendelkező egydimenziós tömbök... 80 Többdimenziós tömbök... 81 Tömb szimmetriája... 82 Mátrix szorzata vektorral... 83 Kát matrix szorzata... 84 Mátrix inverze... 86 Karaktertömbök... 88 Karakterláncok beolvasása a standard bemenetről... 89 Karakterláncok kiírása a standard kimenetre... 89 Karakterlánc konverziós műveletek... 90 Numerikus értékek karakterlánccá alakítása... 90 Karakterlánc numerikus értékekké alakítása... 90 Más konvertáló függvények... 90 Karakterlánc kezelő függvények... 91 Betük frekvenciája egy sorban... 93 Dinamikus tömbök... 93 Vektor páros elemeinek összege... 94 Mátrix páratlan elemeinek összege... 95 Az előfeldolgozó parancsok... 96 Állományok beillesztése... 96 Makrók... 97 Feltételes fordítás makró létezéstől függően... 97 Feltételes fordítás makró nem-létezéstől függően... 98 Feltételes fordítás... 99 Fordítási hibaüzenet generálása... 99 Függvények... 100 A függvény fogalma... 100 Függvény deklarációja... 100 Függvény definiciója... 101 Paraméterátadás... 102 Tömb paraméterek... 103

Faktoriális... 104 Goldbach-feltétel... 105 Legnagyobb közös osztó... 106 Bonyolultabb adatszerkezetek... 108 Struktúrák... 108 Kezdőértékkel rendelkező struktúrák... 110 Tanuló adatai... 110 Saját típusok definiálása... 112 Állományok... 114 Állomány megnyitása... 114 Állomány bezárása... 115 Írás állományba... 116 Karakter írása állományba... 116 Karakterlánc írása állományba... 116 Formázott írás állományba... 117 Olvasás állományból... 117 Karakter olvasása állományól... 117 Karakterlánc olvasása állományból... 118 Formázott olvasás állományból... 118 Állomány végének az ellenőrzése... 119 Pozicionálás az állományban... 119 Szöveges állomány feldolgozása (feladat1)... 120 Szöveges állomány feldolgozása (feladat2)... 121 Szöveges állomány feldolgozása (feladat3)... 122 Klasszikus algoritmusok... 125 Kereső algoritmusok... 125 Lineáris keresés... 125 Bináris keresés... 126 Rendező aloritmusok... 127 Buborékrendezés... 127 Minimumkiválasztásos rendezés... 128 Beszúrásos rendezés... 129 Összefésülések... 130 Összefésülés strázsa (ütköző) nélkül... 130 Összefésülés strázsával (ütközővel)... 133 Rekurzió... 135 Közvetlen rekurzió... 135

Szó betűi fordított sorrendben... 135 Faktoriális...136 Fibonacci sorozat n-edik eleme... 137 Legnagyobb közös osztó... 137 Ackermann függvény... 138 X n -diken kiszámítása...139 Tizes számrendszerből való átírás p számrendszerbe... 140 Az első n páratlan természetes szám összege... 141 Természetes szám számjegyeinek összege... 141 N természetes szám összege...142 Tömbök rekurzívan... 143 Számsorozat negatív elemeinek száma... 143 Szám előfordulása egy tömbben... 144 Páros elemek összege... 145 Rekurzív szerkezetű eredményt igénylő feladatok... 146 N hosszúságú megadott karakterlánc... 146 Természetes szám particiói... 147 Az Oszd meg és uralkodj módszer... 149 Sorozat legnagyobb elem... 149 N szám szorzata... 151 Bináris keresés... 152 Hanoi tornyok... 153 QuickSort... 154 MergeSort... 156 Kombinatorikai feladatok... 158 Permutációk...158 Variációk... 159 Kombinációk... 160 A dinamikus adatszerkezetek... 162 Szimplán láncolt lista...162 Lista létrehozása...163 Lista elemeinek a kiírása...163 Egy új elem beszúrása a listába... 164 Egy elem törlése a listaból... 164 Megoldott listás feladat... 164

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 bemeneti adat: x, kimeneti adat: mod mod x különben mod -x vége(ha) Vége(algoritmus) 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 bemeneti adatok:a, b, kimeneti adat:hányados Amíg a b végezd el: hányados hányados + 1 a a - b vége(amíg) Vége(algoritmus) 1

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 bemeneti adatok: a, b, kimeneti adat: lnko r maradék[a/b] kiszámítjuk az aktuális maradékot a b az osztandót felülírjuk az osztóval b r az osztót felülírjuk a maradékkal ameddig r = 0 amikor a maradék 0, véget ér az algoritmus lnko a lnko egyenlő az utolsó osztó értékével Vége(algoritmus) 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) 2

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 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; 60

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. 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; else 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); 61

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; 135

scanf("%c", &betu); if (betu!= ' ') fordit(); printf("%c", betu); void main() printf("a szo: "); 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; else return n * fakt(n - 1); void main() int n; printf("n = "); scanf("%d", &n); printf("n!= %ld", fakt(n)); getch(); return; 136

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

int max1, max2, kozepe; if (bal == jobb) return x[bal]; else if (jobb - bal == 1) if (x[bal] < x[jobb]) return x[jobb]; else return x[bal]; else kozepe = (bal + jobb) / 2; max1 = maximum(bal, kozepe); max2 = maximum(kozepe + 1, jobb); if (max1 < max2) return max2; else 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; 150

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]; else if (jobb - bal == 1) return x[bal] * x[jobb]; else kozepe = (bal + jobb) / 2; sz1 = szorzas(bal, kozepe); sz2 = szorzas(kozepe + 1, jobb); return sz1 * sz2; 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 szamok szorzata : %d", szorzas(0, n - 1)); getch(); return; 151