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

Hasonló dokumentumok
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

El feldolgozó. Programozás I. Hatwágner F. Miklós október 16. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. 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 C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

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

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

Bevezetés a programozásba I.

Bevezetés a programozásba I.

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

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

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

5. gyakorlat. Konstansok Tömbök Stringek

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

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

Programozás I gyakorlat

Java II. I A Java programozási nyelv alapelemei

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

Karakter- és sztringkezelő függvények, matematikai függvények

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

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

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

Programozás I gyakorlat

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

Informatika terméktervezőknek

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Készítette: Nagy Tibor István

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

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a programozásba I.

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE

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

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

Java II. I A Java programozási nyelv alapelemei

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

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

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

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

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

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

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)

1. Egyszerű (primitív) típusok. 2. Referencia típusok

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Programozás I gyakorlat

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

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

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

BME MOGI Gépészeti informatika 5.

Példák tematikus csoportosításban

A C programozási nyelv III. Pointerek és tömbök.

Pénzügyi algoritmusok

A C programozási nyelv III. Pointerek és tömbök.

Bevezetés a programozásba I.

A C# programozási nyelv alapjai

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

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

C# gyorstalpaló. Készítette: Major Péter

Programozási segédlet

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Típusok és konstansok

Stack Vezérlés szerkezet Adat 2.

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

BASH SCRIPT SHELL JEGYZETEK

Példatár a Programozás 1 tárgyhoz

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

Bizonyítási módszerek - megoldások. 1. Igazoljuk, hogy menden természetes szám esetén ha. Megoldás: 9 n n = 9k = 3 3k 3 n.

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Megoldott programozási feladatok standard C-ben

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Programozás I gyakorlat

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

Algoritmuselmélet 2. előadás

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

A C# PROGRAMOZÁSI NYELV

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Gyakorló feladatok Gyakorló feladatok

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

BME MOGI Gépészeti informatika 1.

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Maximum kiválasztás tömbben

Programozás I. Első ZH segédlet

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Érdekes informatika feladatok

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Programozas 1. Strukturak, mutatok

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Assembly programozás: 2. gyakorlat

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Adatszerkezetek és algoritmusok

Átírás:

Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 27.

Háromszög szerkeszthet ségének ellen rzése ANSI C (C89) megvalósítás #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { i n t a, b, c ; i n t m e g s z e r k e s z t h e t o = 0 ; // l o g i k a i nem/ hamis p r i n t f ( " Adja meg egy haromszog o l d a l h o s s z a i t! \ n" ) ; do { do { // h a t u l t e s z t e l o c i k l u s e l e j e... p r i n t f ( "A o l d a l h o s s z a : " ) ; s c a n f ( "%d", &a ) ; w h i l e ( a <= 0 ) ; //... e s v ege do { p r i n t f ( "B o l d a l h o s s z a : " ) ; s c a n f ( "%d", &b ) ; w h i l e ( b <= 0 ) ; do { p r i n t f ( "C o l d a l h o s s z a : " ) ; s c a n f ( "%d", &c ) ; w h i l e ( c <= 0 ) ; i f ( a+b<=c b+c<=a c+a<=b ) // vagy > p r i n t f ( "Ez nem s z e r k e s z t h e t o meg! \ n" ) ; e l s e { m e g s z e r k e s z t h e t o = 1 ; // l o g i k a i i g e n / i g a z p r i n t f ( " M e g s z e r k e s z t h e t o. \ n" ) ; w h i l e (! m e g s z e r k e s z t h e t o ) ; // t a g a d a s >! r e t u r n 0 ;

Háromszög szerkeszthet ségének ellen rzése C99 megvalósítás; az oldalhossz beolvasása 3x ismétl dik! #i n c l u d e <s t d i o. h> #i n c l u d e <i s o 6 4 6. h> // and, or, not #i n c l u d e <s t d b o o l. h> // b o o l i n t main ( v o i d ) { i n t a, b, c ; b o o l m e g s z e r k e s z t h e t o = f a l s e ; // k i f e j e z o b b t i p u s / e r t e k p r i n t f ( " Adja meg egy haromszog o l d a l h o s s z a i t! \ n" ) ; do { do { // h a t u l t e s z t e l o c i k l u s e l e j e... p r i n t f ( "A o l d a l h o s s z a : " ) ; s c a n f ( "%d", &a ) ; w h i l e ( a <= 0 ) ; //... e s v ege do { p r i n t f ( "B o l d a l h o s s z a : " ) ; s c a n f ( "%d", &b ) ; w h i l e ( b <= 0 ) ; do { p r i n t f ( "C o l d a l h o s s z a : " ) ; s c a n f ( "%d", &c ) ; w h i l e ( c <= 0 ) ; i f ( a+b<=c or b+c<=a or c+a<=b ) // vagy > or p r i n t f ( "Ez nem s z e r k e s z t h e t o meg! \ n" ) ; e l s e { m e g s z e r k e s z t h e t o = t r u e ; // k i f e j e z o b b l o g i k a i e r t e k p r i n t f ( " M e g s z e r k e s z t h e t o. \ n" ) ; w h i l e ( not m e g s z e r k e s z t h e t o ) ; // t a g a d a s > not r e t u r n 0 ;

Háromszög szerkeszthet ségének ellen rzése #i n c l u d e <s t d i o. h> #i n c l u d e <i s o 6 4 6. h> // and, or, not #i n c l u d e <s t d b o o l. h> // b o o l #d e f i n e OLDALSZAM 3 i n t main ( v o i d ) { i n t o t [OLDALSZAM ] ; // 3 elemu tomb az o l d a l h o s s z a k n a k i n t i ; // a k t u a l i s o l d a l i n d e x e b o o l m e g s z e r k e s z t h e t o = f a l s e ; p r i n t f ( " Adja meg egy haromszog o l d a l h o s s z a i t! \ n" ) ; do { i = 0 ; w h i l e ( i < OLDALSZAM) { // Csak 1 x i r j u k meg a b e o l v a s a s t! do { p r i n t f ( "A k o v e t k e z o o l d a l h o s s z a : " ) ; s c a n f ( "%d", &o t [ i ] ) ; // tomb i n d e x e l e s w h i l e ( o t [ i ] <= 0 ) ; i ++; i f ( o t [0]+ o t [1]<= o t [ 2 ] o r o t [1]+ o t [2]<= o t [ 0 ] o r o t [2]+ o t [0]<= o t [ 1 ] ) p r i n t f ( "Ez nem s z e r k e s z t h e t o meg! \ n" ) ; e l s e { m e g s z e r k e s z t h e t o = t r u e ; p r i n t f ( " M e g s z e r k e s z t h e t o. \ n" ) ; w h i l e ( not m e g s z e r k e s z t h e t o ) ; r e t u r n 0 ;

Háromszög szerkeszthet ségének ellen rzése Tömb deníció típus tömbazonosító[méret]; pl. int ot[3]; méret pozitív, egész érték állandó kifejezés állandó kifejezés értéke fordítási id ben kiszámítható Tömb tárigénye sizeof(tömbazonosító) méret*sizeof(típus) Tömbelemek (indexes változó) elérése tömbazonosító[index] 0 index méret 1 ot 0 1 2

Háromszög szerkeszthet ségének ellen rzése #i n c l u d e <s t d i o. h> #i n c l u d e <i s o 6 4 6. h> // and, or, not #i n c l u d e <s t d b o o l. h> // b o o l #d e f i n e OLDALSZAM 3 i n t main ( v o i d ) { i n t o t [OLDALSZAM ] ; i n t i ; b o o l m e g s z e r k e s z t h e t o = f a l s e ; p r i n t f ( " Adja meg egy haromszog o l d a l h o s s z a i t! \ n" ) ; do { i = 0 ; w h i l e ( i < OLDALSZAM) { do { p r i n t f ( "%c o l d a l h o s s z a : ", i+ 'A ' ) ; // o l d a l megnevezese s c a n f ( "%d", &o t [ i ] ) ; w h i l e ( o t [ i ] <= 0 ) ; i ++; // k o v e t k e z o o l d a l neve i f ( o t [0]+ o t [1]<= o t [ 2 ] o r o t [1]+ o t [2]<= o t [ 0 ] o r o t [2]+ o t [0]<= o t [ 1 ] ) p r i n t f ( "Ez nem s z e r k e s z t h e t o meg! \ n" ) ; e l s e { m e g s z e r k e s z t h e t o = t r u e ; p r i n t f ( " M e g s z e r k e s z t h e t o. \ n" ) ; w h i l e ( not m e g s z e r k e s z t h e t o ) ; r e t u r n 0 ;

Háromszög szerkeszthet ségének ellen rzése Oldal nevének el állítása Kihasználjuk, hogy az ASCII kódok a bet k abc-beli sorrendjének megfelel en növekednek ('A' == 65, 'B' == 66,..., 'Z' == 90) Hasonló a helyzet a számjegyekkel is ('0' == 48, '1' == 49,..., '9' == 57) Számjegy ASCII kód: '0'+szamjegy ASCII kód Számjegy: karakter-'0' Bet k is hasonlóan kezelhet k 14 p r i n t f ( "%c o l d a l h o s s z a : ", i+ 'A ' ) ; // o l d a l megnevezese Formátumspecikátor: %c (egyetlen karakter, nincs lánczáró nulla!) Karakter konstans aposztrófok között!

Számjegy karakterek számlálása 1/2 1 #i n c l u d e <s t d i o. h> 2 i n t main ( v o i d ) { 3 p r i n t f ( " Szamjegyek, u r e s e s egyeb k a r a k t e r e k l e s z a m l a l a s a \n" 4 " a bemeneten EOF i g vagy C t r l+d i g. \ n\n" ) ; 5 i n t k, f e h e r =0, egyeb =0; 6 i n t n u l l a =0, egy =0, k e t t o =0, harom =0, negy =0, // : ( 7 o t =0, h a t =0, h e t =0, n y o l c =0, k i l e n c =0; 8 w h i l e ( ( k=g e t c h a r ( ) )!= EOF){ 9 s w i t c h ( k ) { // Ronda, mint egy l o h a r a p a s! 10 c a s e ' 0 ' : n u l l a ++; b r e a k ; 11 case ' 1 ' : egy++; break ; 12 case ' 2 ' : k e t t o++; break ; 13 case ' 3 ' : harom++; break ; 14 case ' 4 ' : negy++; break ; 15 case ' 5 ' : ot++; break ; 16 case ' 6 ' : hat++; break ; 17 case ' 7 ' : het++; break ; 18 case ' 8 ' : n y o l c++; break ; 19 c a s e ' 9 ' : k i l e n c ++; b r e a k ; 20 c a s e ' ' : c a s e ' \n ' : c a s e ' \ t ' : f e h e r ++; b r e a k ; 21 d e f a u l t : egyeb++; b r e a k ; 22 23

Számjegy karakterek számlálása 2/2 24 p r i n t f ( " Szamjegyek : \ n" ) ; 25 p r i n t f ( " N u l l a : \ t%d db\n", n u l l a ) ; // Uram i r g a l m a z z! 26 p r i n t f ( " Egy : \ t%d db\n", egy ) ; 27 p r i n t f ( " Ketto : \ t%d db\n", k e t t o ) ; 28 p r i n t f ( "Harom : \ t%d db\n", harom ) ; 29 p r i n t f ( "Negy : \ t%d db\n", negy ) ; 30 p r i n t f ( "Ot : \ t%d db\n", o t ) ; 31 p r i n t f ( " Hat : \ t%d db\n", h a t ) ; 32 p r i n t f ( " Het : \ t%d db\n", h e t ) ; 33 p r i n t f ( " Nyolc : \ t%d db\n", n y o l c ) ; 34 p r i n t f ( " K i l e n c : \ t%d db\n", k i l e n c ) ; 35 p r i n t f ( " U r es k a r a k t e r e k : %d, egyeb : %d\n", f e h e r, egyeb ) ; 36 r e t u r n 0 ; 37 Nyilvánvalóan szükségünk van egy tömbre!

Számjegy karakterek számlálása 1/2 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <i s o 6 4 6. h> 3 #d e f i n e DB 10 4 i n t main ( v o i d ) { 5 p r i n t f ( " Szamjegyek, u r e s e s egyeb k a r a k t e r e k " 6 " l e s z a m l a l a s a \ na bemeneten EOF i g " 7 " vagy C t r l+d i g. \ n\n" ) ; 8 i n t i, k, f e h e r =0, egyeb =0; 9 i n t szamjegy [DB ] ; // 10 elemu tomb a t i z szamjegynek 10 i = 0 ; 11 w h i l e ( i < DB) { 12 s z a m j e g y [ i ] = 0 ; // S z a m l a l o k n u l l a z a s a 13 i ++; 14

Számjegy karakterek számlálása 2/2 15 w h i l e ( ( k=g e t c h a r ( ) )!= EOF){ 16 i f ( k>=' 0 ' and k<=' 9 ' ) { 17 i = k ' 0 ' ; // K a r a k t e r a t a l a k i t a s a szamma, 18 s z a m j e g y [ i ]++; // amit i n d e x k e n t h a s z n a l u n k 19 e l s e i f ( k==' ' o r k==' \n ' o r k==' \ t ' ) f e h e r ++; 20 e l s e egyeb++; 21 22 p r i n t f ( " Szamjegyek : \ n" ) ; 23 i = 0 ; // Eredmenyek k i j e l z e s e 24 w h i l e ( i < DB) { 25 p r i n t f ( "%d\ t%d db\n", i, s z a m j e g y [ i ] ) ; 26 i ++; 27 28 p r i n t f ( " U r es k a r a k t e r e k : %d, egyeb : %d\n", f e h e r, egyeb ) ; 29 r e t u r n 0 ; 30

Számjegy karakterek számlálása Tömbelemek, mint számlálók Az i számjegy darabszámát szamjegy[i] tárolja! (Azaz pl. 0-ból szamjegy[0], 1-b l szamjegy[1], sít. érkezett.) Tömbök inicializálása típus tömbazonosító[<méret>]<=inicializátorlista>; Ha inicializátorlista elemszáma < méret további elemek nullázódnak Ha inicializátorlista elemszáma > méret hiba! Ha <méret>-et nem specikálták, a fordító megállapítja inicializátorlista elemszámából De a <méret> és az inicializátorlista közül legalább az egyiknek léteznie kell!

Számjegy karakterek számlálása #i n c l u d e <s t d i o. h> #i n c l u d e <i s o 6 4 6. h> #d e f i n e DB 10 i n t main ( v o i d ) { p r i n t f ( " Szamjegyek, u r e s e s egyeb k a r a k t e r e k l e s z a m l a l a s a \n" " a bemeneten EOF i g vagy C t r l+d i g. \ n\n" ) ; i n t k, i, f e h e r =0, egyeb =0; i n t s z a m j e g y [DB] = { 0 ; // s z a m l a l o k n u l l a z a s a i n i c i a l i z a l a s s a l w h i l e ( ( k=g e t c h a r ( ) )!= EOF){ i f ( k>=' 0 ' and k<=' 9 ' ) ++s z a m j e g y [ k ' 0 ' ] ; // s z a m l a l o k l e p t e t e s e e l s e i f ( k==' ' o r k==' \n ' o r k==' \ t ' ) ++f e h e r ; e l s e ++egyeb ; p r i n t f ( " Szamjegyek : \ n" ) ; i = 0 ; w h i l e ( i < DB) { p r i n t f ( "%d\ t%d db\n", i, s z a m j e g y [ i ] ) ; i ++; p r i n t f ( " U r es k a r a k t e r e k : %d, egyeb : %d\n", f e h e r, egyeb ) ; r e t u r n 0 ;

Számok kiírása fordított sorrendben #i n c l u d e <s t d i o. h> #d e f i n e N 5 i n t main ( v o i d ) { p r i n t f ( " Adjon meg %d szamot, k i i r j u k o k e t " " f o r d i t o t t s o r r e n d b e n! \ n\n", N ) ; i n t szamok [N], db =0; w h i l e ( db < N) { p r i n t f ( "%d. szam : ", db +1); s c a n f ( "%d", &szamok [ db ] ) ; db++; p r i n t f ( "\ n F o r d i t o t t s o r r e n d b e n : \ n" ) ; db = N 1; w h i l e ( db >= 0) { p r i n t f ( "%d\ t ", szamok [ db ] ) ; db ; p r i n t f ( "\n" ) ; r e t u r n 0 ;

Számok kiírása fordított sorrendben #i n c l u d e <s t d i o. h> #d e f i n e N 5 i n t main ( v o i d ) { p r i n t f ( " Adjon meg %d szamot, k i i r j u k o k e t " " f o r d i t o t t s o r r e n d b e n! \ n\n", N ) ; i n t szamok [N], db =0; w h i l e ( db < N) { p r i n t f ( "%d. szam : ", db +1); s c a n f ( "%d", &szamok [ db ++]); // o s s z e v o n a s p r i n t f ( "\ n F o r d i t o t t s o r r e n d b e n : \ n" ) ; w h i l e ( db ) p r i n t f ( "%d\ t ", szamok [ db ] ) ; // o s s z e v o n a s p r i n t f ( "\n" ) ; r e t u r n 0 ;

Soros keresés #i n c l u d e <s t d i o. h> #i n c l u d e <i s o 6 4 6. h> #d e f i n e N 10 i n t main ( v o i d ) { i n t szamok [N] = {13, 11, 0, 1, 42, 7, 14, 17, 23, 2 1 ; p r i n t f ( " Mit k e r e s u n k " ) ; i n t i =0, k e r e s ; s c a n f ( "%d", &k e r e s ) ; w h i l e ( i <N and szamok [ i ]!= k e r e s ) i ++; i f ( i == N) p r i n t f ( "Nem t a l a l t u k meg\n" ) ; e l s e p r i n t f ( " M e g t a l a l t u k a %d i n d e x u h e l y e n! \ n", i ) ; r e t u r n 0 ;

Bináris keresés Csak rendezett tömbön használható! Start Be: szamok, N, keres also = 0 felso = N-1 Stop szamok -23-11 0 1 7 13 14 17 21 42 0 1 2 3 4 5 6 7 8 9 keres 1 also <= felso kozep = padló((also+felso) / 2) szamok[kozep] < keres i i h Ki: "nincs találat" h Ki: kozep szamok[kozep] > keres also = kozep + 1 felso = kozep - 1 h i also kozep felso 1 0 9 2 0 4 9 3 0 4 3 4 0 1 3 5 2 1 3 6 2 2 3 7 3 2 3 8 3 3 3

Bináris keresés #i n c l u d e <s t d i o. h> #d e f i n e N 10 i n t main ( v o i d ) { i n t szamok [N] = { 23, 11, 0, 1, 7, 13, 14, 17, 21, 4 2 ; p r i n t f ( " Mit k e r e s u n k " ) ; i n t k e r e s ; s c a n f ( "%d", &k e r e s ) ; i n t a l s o =0, f e l s o=n 1, kozep ; w h i l e ( a l s o <= f e l s o ) { kozep = ( a l s o+f e l s o ) / 2 ; i f ( k e r e s < szamok [ kozep ] ) f e l s o = kozep 1; e l s e i f ( k e r e s > szamok [ kozep ] ) a l s o = kozep +1; e l s e { p r i n t f ( " M e g t a l a l t u k a ( z ) %d i n d e x u h e l y e n. \ n", kozep ) ; r e t u r n 0 ; p r i n t f ( "Nem t a l a l t u k meg, de a ( z ) %d i n d e x u elemben " " l e n n e a h e l y e. \ n", a l s o ) ; r e t u r n 0 ;

Buborék rendezés 0 1 2 3 4 5 6 7 12 3 54-4 56 4 7 3 e 3 12 54-4 56 4 7 3 e 3 12 54-4 56 4 7 3 e 3 12-4 54 56 4 7 3 e v v v v 0 1 2 3 4 5 6 7 3 12-4 54 56 4 7 3 3 12-4 54 4 56 7 3 e e v v 3 12-4 54 4 7 56 3 3 12-4 54 4 7 3 56 e v e v

Buborék rendezés 0 1 2 3 4 5 6 7 3 12-4 54 4 7 3 56 e e 3 12-4 54 4 7 3 56 e 3-4 12 54 4 7 3 56 v v v 0 1 2 3 4 5 6 7 3-4 12 4 54 7 3 56 3-4 12 4 e 7 54 v 3 56 e v 3-4 12 4 7 3 54 56 e v 3-4 12 54 4 7 3 56 e v

Buborék rendezés 0 1 2 3 4 5 6 7 3-4 12 4 7 3 54 56 e v -4 3 12 4 7 3 54 56 e v 0 1 2 3 4 5 6 7-4 3 4 7 12 3 54 56 e v -4 3 4 7 3 12 54 56 e v -4 3 12 4 7 3 54 56 e v -4 3 4 12 7 3 54 56 e v

Buborék rendezés 0 1 2 3 4 5 6 7-4 3 4 7 3 12 54 56 e v 0 1 2 3 4 5 6 7-4 3 4 3 7 12 54 56 e v -4 3 4 7 3 12 54 56 e v -4 3 4 7 3 12 54 56 e v -4 3 4 7 3 12 54 56 e v

Buborék rendezés 0 1 2 3 4 5 6 7-4 3 4 3 7 12 54 56 e v -4 3 4 3 7 12 54 56 e v -4 3 4 3 7 12 54 56 e v -4 3 3 4 7 12 54 56 ev

Buborék rendezés 0 1 2 3 4 5 6 7-4 3 3 4 7 12 54 56 e v -4 3 3 4 7 12 54 56 e v -4 3 3 4 7 12 54 56 ev

Buborék rendezés 0 1 2 3 4 5 6 7-4 3 3 4 7 12 54 56 e v -4 3 3 4 7 12 54 56 ev

Buborék rendezés 0 1 2 3 4 5 6 7-4 3 3 4 7 12 54 56 v

Buborék rendezés Start Be: szamok, n v = n-1 Ki: "Rendezés után:" i = 0 Stop h v >= 1 i e = 0 h i < n i Ki: szamok[i] i = i+1 e < v szamok[e] > szamok[e+1] i h v = v-1 h i csere = szamok[e] szamok[e] = szamok[e+1] szamok[e+1] = csere e = e+1

Buborék rendezés #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { i n t szamok [ ] = {12, 3, 54, 4, 56, 4, 7, 3 ; i n t n = s i z e o f ( szamok )/ s i z e o f ( szamok [ 0 ] ) ; // Tomb elemszam s z a m o l a s a i n t v=n 1, e ; w h i l e ( v>=1) { e = 0 ; w h i l e ( e<v ) { i f ( szamok [ e]>szamok [ e +1]) { i n t c s e r e = szamok [ e ] ; szamok [ e ] = szamok [ e + 1 ] ; szamok [ e +1] = c s e r e ; e++; v ; i n t i = 0 ; p r i n t f ( " Rendezes utan : \ n" ) ; w h i l e ( i < n ) { p r i n t f ( "%d\ t ", szamok [ i ] ) ; i ++; p r i n t f ( "\n" ) ; r e t u r n 0 ;

Karakterlánc-kezelés alapjai C-ben nincs karakterlánc (string) típus! karakteres tömbök, lánczáró karakterrel ('\0') 0 1 2 3 4 s M o z i '\0' Karakterláncok manipulálása: függvényekkel, pl. strcat Az els höz f zi a második karakterlánc tartalmát strcpy Az els be másolja a második karakterlánc tartalmát strlen Megállapítja a karakterlánc hosszát ('\0' nélkül) strcmp Összehasonlítja a karakterláncokat (ASCII-kód alapján) Szükséges fejfájl: string.h

Karakterlánc-kezelés alapjai 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e < s t r i n g. h> 3 4 i n t main ( v o i d ) { 5 c h a r s1 [ 1 2 8 ] = " L o l k a " ; // L a n c z a r o ' \ 0 ' a u t o m a t i k u s a n 6 c h a r s2 [ ] = " Bolka " ; // b e k e r u l a k a r a k t e r l a n c v e g e r e 7 8 s t r c a t ( s1, " e s " ) ; // K a r a k t e r l a n c o k o s s z e f u z e s e 9 s t r c a t ( s1, s2 ) ; // Van e l e g h e l y s1 ben 10 // F o r m a t u m s p e c i f i k a t o r : %s 11 p r i n t f ( "A mese cime : %s \n", s1 ) ; 12 13 // Hossz ; z > s i z e _ t, u > u n s i g n e d 14 p r i n t f ( "A cim h o s s z a : %zu \n", s t r l e n ( s1 ) ) ; 15 // l > long, u > u n s i g n e d 16 p r i n t f ( " K a r a k t e r l a n c t a r i g e n y e : %l u b y t e. \ n", s i z e o f ( s1 ) ) ; 17 18 s t r c p y ( s1, " Kockas f u l u n y u l " ) ; // Masolas 19 p r i n t f ( " Masik mese : %s \n", s1 ) ;

Karakterlánc-kezelés alapjai 21 s1 [ 6 ] = ' \0 ' ; s2 [ 3 ] = ' h ' ; // M o d o s i t h a t o k a r a k t e r e n k e n t 22 p r i n t f ( "Nem i s v i c c e s : %s %s \n", s1, s2 ) ; 23 // O s s z e h a s o n l i t a s t a r t a l o m r a 24 i n t h a s o n l i t = strcmp ( s1, s2 ) ; 25 i f ( h a s o n l i t < 0) { 26 p r i n t f ( "%s m e g e l o z i %s t. \ n", s1, s2 ) ; 27 e l s e i f ( h a s o n l i t > 0) { 28 p r i n t f ( "%s k o v e t i %s t. \ n", s1, s2 ) ; 29 e l s e { 30 p r i n t f ( "%s é s %s egyformak. \ n", s1, s2 ) ; 31 32 r e t u r n 0 ; 33

Karakterlánc-kezelés alapjai Kimenet A mese cime: Lolka es Bolka A cim hossza: 14 Karakterlanc tarigenye: 128 byte. Masik mese: Kockas fulu nyul Nem is vicces: Kockas Bolha Kockas koveti Bolha-t.

Konvertálás kettesb l tízes számrendszerbe #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { c h a r b [ 6 4 ] ; u n s i g n e d d, i ; p r i n t f ( " Adjon meg egy k e t t e s s z a m r e n d s z e r b e l i szamot! \ n" ) ; s c a n f ( "%s ", b ) ; // F o r m a t u m s t r i n g : %s, n i n c s c i m k e p z e s!!! d = i = 0 ; w h i l e ( b [ i ]!= ' \0 ' ) { // C s a b i t o l e n n e az s t r l e n ( ), de ne! d = d 2 + b [ i ] ' 0 ' ; // A l t a l a b a n NAGYON l a s s u l e n n e i ++; p r i n t f ( " T i z e s s z a m r e n d s z e r b e n : %d\n", d ) ; r e t u r n 0 ;

Konvertálás tízesb l kettes számrendszerbe #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { c h a r b [ 1 0 0 ] ; i n t d, i ; p r i n t f ( " Adjon meg egy t i z e s s z a m r e n d s z e r b e l i szamot! \ n" ) ; s c a n f ( "%d", &d ) ; i = 0 ; w h i l e ( d > 0) { b [ i ] = d%2+ ' 0 ' ; d /= 2 ; i ++; p r i n t f ( " K e t t e s s z a m r e n d s z e r b e n : " ) ; i ; w h i l e ( i >= 0) { p r i n t f ( "%c ", b [ i ] ) ; // Egy k a r a k t e r nyomtatasa i ; p r i n t f ( "\n" ) ; r e t u r n 0 ;

Neptun kód ellen rzés #i n c l u d e <s t d i o. h> #i n c l u d e <s t d b o o l. h> #i n c l u d e <i s o 6 4 6. h> #i n c l u d e < s t r i n g. h> i n t main ( v o i d ) { b o o l h e l y t e l e n ; c h a r neptun [ 6 4 ] ; // Hogy meg a t u l h o s s z u i s e l f e r j e n do { h e l y t e l e n = f a l s e ; p r i n t f ( " Adja meg a Neptun k o d j a t : " ) ; s c a n f ( "%s ", neptun ) ; i f ( s t r l e n ( neptun )!= 6) { // k a r a k t e r l a n c h o s s z a n a k l e k e r d e z e s e p r i n t f ( " Hat k a r a k t e r b o l k e l l a l l n i a! \ n" ) ; h e l y t e l e n = t r u e ; e l s e { u n s i g n e d i =0; w h i l e ( not h e l y t e l e n and neptun [ i ]!= ' \0 ' ) { c h a r k = neptun [ i ] ; bool szamjegy = k>=' 0 ' and k<=' 9 ' ; bool nagybetu = k>='a ' and k<='z ' ; b o o l k i s b e t u = k>=' a ' and k<=' z ' ; i f ( not s z a m j e g y and not n a g y b e t u and not k i s b e t u ) { p r i n t f ( " Csak s z a m j e g y e k e t e s b e t u k e t t a r t a l m a z h a t! \ n" ) ; h e l y t e l e n = t r u e ; i ++; w h i l e ( h e l y t e l e n ) ; p r i n t f ( " Rendben. \ n" ) ; r e t u r n 0 ;

Neptun kód ellen rzés #i n c l u d e <s t d i o. h> #i n c l u d e <c t y p e. h> // t o u p p e r ( ) m i a t t #i n c l u d e <s t d b o o l. h> #i n c l u d e <i s o 6 4 6. h> #i n c l u d e < s t r i n g. h> i n t main ( v o i d ) { b o o l h e l y t e l e n ; c h a r neptun [ 6 4 ] ; do { h e l y t e l e n = f a l s e ; p r i n t f ( " Adja meg a Neptun k o d j a t : " ) ; s c a n f ( "%s ", neptun ) ; i f ( s t r l e n ( neptun )!= 6) { p r i n t f ( " Hat k a r a k t e r b o l k e l l a l l n i a! \ n" ) ; h e l y t e l e n = t r u e ; e l s e { u n s i g n e d i =0; // ASCII kod > egesz szam ; 0 > hamis, minden mas > i g a z w h i l e ( not h e l y t e l e n and neptun [ i ] ) { c h a r k = t o u p p e r ( neptun [ i ] ) ; // n a g y b e t u r e a l a k i t a s i f ( ( k< ' 0 ' o r k> ' 9 ' ) and ( k< 'A ' o r k> 'Z ' ) ) { p r i n t f ( " Csak s z a m j e g y e k e t e s b e t u k e t t a r t a l m a z h a t! \ n" ) ; h e l y t e l e n = t r u e ; i ++; w h i l e ( h e l y t e l e n ) ; p r i n t f ( " Rendben. \ n" ) ; r e t u r n 0 ;

Neptun kód ellen rzés Karakterek osztályozása, átalakítása ctype.h beszerkesztése szükséges Függvények vagy makrók (el feldolgozó) Paraméter típusa int, de az értéknek unsigned char-ral ábrázolhatónak, vagy EOF-nak kell lennie Visszatérési érték int, karakterosztályozó rutinoknál logikai értékként kezelend Fv./makró név islower(c) isupper(c) isalpha(c) isdigit(c) isalnum(c) isxdigit(c) isspace(c) isprint(c) tolower(c) toupper(c) Funkció c kisbet c nagybet c bet c számjegy c alfanumerikus c hexadecimális számjegy c fehér karakter c nyomtatható c kisbet s alakja, ha c nagybet c nagybet s alakja, ha c kisbet

Neptun kód ellen rzés #i n c l u d e <s t d i o. h> #i n c l u d e <c t y p e. h> // i s a l n u m ( ) m i a t t #i n c l u d e <s t d b o o l. h> #i n c l u d e <i s o 6 4 6. h> #i n c l u d e < s t r i n g. h> i n t main ( v o i d ) { b o o l h e l y t e l e n ; c h a r neptun [ 6 4 ] ; do { h e l y t e l e n = f a l s e ; p r i n t f ( " Adja meg a Neptun k o d j a t : " ) ; s c a n f ( "%s ", neptun ) ; i f ( s t r l e n ( neptun )!= 6) { p r i n t f ( " Hat k a r a k t e r b o l k e l l a l l n i a! \ n" ) ; h e l y t e l e n = t r u e ; e l s e { u n s i g n e d i =0; w h i l e ( not h e l y t e l e n and neptun [ i ] ) { i f ( not i s a l n u m ( neptun [ i ] ) ) { // a l f a n u m e r i k u s k a r a k t e r p r i n t f ( " Csak s z a m j e g y e k e t e s b e t u k e t t a r t a l m a z h a t! \ n" ) ; h e l y t e l e n = t r u e ; i ++; w h i l e ( h e l y t e l e n ) ; p r i n t f ( " Rendben. \ n" ) ; r e t u r n 0 ;