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

Hasonló dokumentumok
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

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

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

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

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

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

Példák tematikus csoportosításban

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

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

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

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

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

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

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

Pénzügyi algoritmusok

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

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

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.

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

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

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

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

5. gyakorlat. Konstansok Tömbök Stringek

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

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 I gyakorlat

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Forráskód formázási szabályok

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

9.fejezet: Függvények és külső eljárások

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

Programozás C és C++ -ban

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

Programozás I gyakorlat

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

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

Egyváltozós függvények 1.

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

Alprogramok, paraméterátadás

int tokeletes(int szam) { int i,oszto=0; for(i=1; i<szam; i++) { if(szam %i == 0) { oszto+=i; }

4. A kézfogások száma pont Összesen: 2 pont

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

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 II. 2. Dr. Iványi Péter

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

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

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

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

MATLAB alapismeretek III.

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

INFORMATIKA javítókulcs 2016

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Trigonometria Megoldások. 1) Oldja meg a következő egyenletet a valós számok halmazán! (12 pont) Megoldás:

C programozás. 1 óra Bevezetés

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

C programozási nyelv

Szövegek C++ -ban, a string osztály

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

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

Informatika terméktervezőknek

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

Bevezetés a programozásba I.

Programozás I. 5. Előadás: Függvények

1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e:

Elemi függvények. Matematika 1. előadás. ELTE TTK Földtudomány BSc, Környezettan BSc, Környezettan tanár 3. előadás. Csomós Petra

Objektumok inicializálása

Elemi függvények. Matematika 1. előadás. ELTE TTK Földtudomány BSc, Környezettan BSc, Környezettan tanár október 4.

Vezérlési szerkezetek

Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

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

A C# programozási nyelv alapjai

Programozás C++ -ban 2007/1

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Trigonometria II.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

2012. október 9 és 11. Dr. Vincze Szilvia

B I T M A N B I v: T M A N

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Megoldott programozási feladatok standard C-ben

A Föld középpontja felé szabadon eső test sebessége növekszik, azaz, a

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

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)

Matematika javítóvizsga témakörök 10.B (kompetencia alapú )

5. Gyakorlat. struct diak {

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

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

Komputeralgebra rendszerek

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

Programozás I gyakorlat

MATLAB alapismeretek II.

Információs Technológia

Java II. I A Java programozási nyelv alapelemei

Átírás:

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/0. Karakter- és sztringkezelő függvények, matematikai függvények Karakterkezelő könyvtári függvények Mintaprogram a karakterosztályozásra Sztringek kezelése Sztringkezelő függvények Sztring argumentum átadása függvénynek Matematikai függvények Szögfüggvények és inverz függvényeik Exponenciális és logaritmikus függvények Egyéb matematikai függvények Véletlenszám-generálás függvényei

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/1. Karakterkezelő könyvtári függvények A karakterkezelő függvényeket használó program elején meg kell adnunk a ctype.h header-fájlt : #include <ctype.h> A karaktereket kezelő makrók (a makrókat részletesen lásd később) formailag a függvények mintájára használhatók. Az alábbiakban mutatott makrók a paraméterként megadott karakterről eldöntik, hogy a karaktereknek egy bizonyos csoportjába tartozik-e.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/2. Ha igen, akkor a makró nem nulla értéket ad, egyébként nullát. isalnum( karakter ) igaz, ha a karakter alfanumerikus ('a'..'z', 'A'..'Z', '0'..'9'). isalfa( karakter ) igaz, ha a karakter betű : ( 'a'..'z', 'A'..'Z' ). isdigit( karakter ) igaz, ha a karakter számjegy ('0'..'9'). islower( karakter ) igaz, ha a karakter kisbetű ('a'..'z'). isupper( karakter ) igaz, ha a karakter nagybetű ('A'..'Z').

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/3. Mintaprogram a karakterosztályozásra: A beadott karaktert megvizsgáljuk, mely karaktercsoportnak tagja. Egyes billentyűk, pl. a kurzormozgató és a funkcióbillentyűk két karaktert jelentenek: egy '\0' és egy nyomtatható karaktert. #include <ctype.h> #include <stdio.h> #define ESC 27 main()

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/4. { char bill ; puts("karakterosztalyozas" ); do { printf("nyomjon le egy billentyut:" ); bill = getch(); putch(bill); if ( isalnum( bill ) ) puts("\n alfanumerikus karakter" ); else puts("\n egyéb karakter (irasjel, \n \ vezerlokarakter, vagy nem ASCII karakter)" ); if ( isalpha( bill ) ) puts(" betu karakter"); if ( isdigit( bill ) ) puts(" decimalis szamjegy karakter" ); if ( islower( bill ) ) puts(" kisbetü" ); if ( isupper( bill ) ) puts(" nagybetü" ); } while ( bill!= ESC ); }

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/5. Sztringek kezelése Emlékeztetőül: a sztring a C nyelvben nem önálló típus, hanem egy '\0' karakterrel záródó karaktervektort értünk alatta. A karaktervektor-jelleg miatt egy szövegváltozónak nem adhatunk egy értékadó utasítással értéket: char szoveg[ 23 ]; szoveg = "ablak"; // hibás értékadási kísérlet // mert szoveg egy mutatókonstans! Az értékadás csak a karakterek egyenkénti átmásolásával, vagy ezt helyettünk elvégző függvénnyel lehetséges.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/6. Sztringkezelő függvények: Sztring karaktereinek átmásolása egy másik sztringbe (értékadás sztringnek): strcpy(<célsztringváltozó>, <forrássztring>); Pl.: char nev[15], name[20]; strcpy( nev, "Dennis Ritchie" ); strcpy( name, nev ); A másolás a szöveg végét jelző '\0' karaktert is átmásolja. Vegyük észre, hogy a függvény mindkét paramétere char* típusú mutató.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/7. Szöveg hosszának meghatározása ('\0' nélkül): <hossz> = strlen( <szöveg> ); Pl.: meret = strlen ( nev ); // meret 14 lesz Szöveg hozzáfűzése egy másik szöveg végéhez: strcat( <szöveg>, <hozzáfűzött_szöveg>); Pl.: char szov[20] = "tanulás"; strcat( szov, " szükséges" ); Megj.: A <szöveg> vektornak elegendő hosszúnak kell lennie <hozzáfűzött_szöveg> befogadására.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/8. Keresett szöveg első előfordulásának megkeresése egy másik szövegben. A <karaktermutató> a megtalált előfordulás első karakterére mutat (vagy NULL, ha nem talált): <karaktermutató> = strstr(<szöveg>, <keresett>); Pl.: char *poz, szov[12] = "zászlós", keresett[3] = "ló"; poz = strstr( szov, keresett); puts( poz ); // kiírás: lós

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/9. Szöveg adott számú első karakterének átmásolása egy célszövegbe, '\0' karakter elhelyezése nélkül: strncpy(<célszöveg>, <forrásszöveg>, <hossz>); Pl.: char cel[ 12 ], forras[ 7 ] = "kapocs"; strncpy( cel, forras, 3 ); cel[ 3 ] = '\0' ; puts( cel ) ; // "kap"

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/10. Két szöveg összehasonlítása (komparálása) karakterről-karakterre, a karakterek kódjai alapján: <viszonyszám> = strcmp( <szov1>, <szov2>); Ha szov1 < szov2, akkor viszonyszám < 0, ha szov1 == szov2, akkor viszonyszám = 0, ha szov1 > szov2, akkor viszonyszám > 0. Pl.: char s1[ 7 ] = "Góliát", s2[ 6 ] = "Törpe"; egeszvalt = strcmp(s1, s2); // egeszvalt < 0 A fenti szövegkezelő függvények használatához a string.h header-fájlt deklarálni kell a program elején: #include <string.h>

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/11. Sztring argumentum átadása függvénynek Sztringek átadása hasonló a vektorok átadásához, azzal a megjegyzéssel, hogy nem kell a vektor hasznos elemeinek számát külön argumentumként átadni, mert a '\0' karakter jelzi a karaktervektor utolsó hasznos elemét. Példaként írjunk függvényeket a Pascal nyelvből ismert delete, insert és copy alprogramok által megvalósított funkciókra és alkalmazzuk azokat programban! #include <stdio.h> #include <string.h> // strlen() miatt void del(char mibol[ ], int honnan, int mennyit ); void insert( char mit[ ], char mibe[ ], int hova); void copy(char *mibe, char *mibol, int honnan, int mennyit);

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/12. main( ) { char s1[ 11 ] = "siklas"; char s2[ 20 ] ; printf( "%s\n", s1 ); // siklas del(s1,1,3); printf( "%s\n", s1 ); // sas insert( "zor",s1,1); printf( "%s\n", s1 ); // szoras copy( s2,s1, 2,4 ); printf( "%s\n", s2 ); // órás }

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/13. void del(char mibol[ ], int honnan, int mennyit ) { int i, regimeret ; regimeret = strlen( mibol ); for ( i=0; i < regimeret-honnan && i < mennyit; i++) mibol[ honnan+i ] = mibol[ honnan+mennyit+i ]; while (honnan+mennyit+i < regimeret+1) {mibol[ honnan+i ] = mibol[ honnan+mennyit+i]; i++;} } void insert( char mit[ ], char mibe[ ], int hova) { // hova 0-tól indul int hosszt, hosszb, i; hosszt = strlen(mit); hosszb = strlen(mibe); for (i = 0; i< hosszb hova + 1; i++) // helycsinálás, eltolás jobbra mibe[ hosszb + hosszt - i ] = mibe[ hosszb - i ]; for ( i = 0; i < hosszt; i++ ) mibe[hova+i ] = mit[ i ]; // bemásolás }

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/14. void copy(char *mibe, char *mibol, int honnan, int mennyit) //vagy void copy(char mibe[ ], char mibol[ ], int honnan, int mennyit) { char * smut1, * smut2 ; // segéd mutatók int i ; smut1 = mibe ; smut2 = mibol + honnan ; for (i = 0; mibol[ honnan+i ] && i < mennyit; i++, smut1++, smut2++) *smut1 = *smut2; // kimásolás *smut1 = '\0' ; }

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/15. Matematikai függvények Az alábbiakban néhány fontosabb matematikai függvényt ismerhetünk meg, melyek használata előtt a math.h include fájlt be kell emelni a programba. A függvények hiba esetén az errno változó értékének beállításával jelzik a hiba fajtáját: ha a megadott argumentum nincs benne a függvény értelmezési tartományában, errno értéke EDOM lesz (33), ha az eredmény nem fér el a számára megadott típusban, errno értéke ERANGE lesz (34). A függvények általában double argumentumból double típusú eredményt állítanak elő (d d).

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/16. Szögfüggvények és inverz függvényeik: sin(<szög_radiánban>) a megadott szög szinuszát adja (d d). asin(<argumentum>) a -1..+1 itervallumba eső argumentum arkusz szinusz szögértékét adja radiánban (d d). A zárt intervallumból kieső argumentum EDOM hibakódot ad. A szög a - /2..+ /2 zárt intervallumban adódik. cos(<szög_radiánban>) a megadott szög koszinuszát adja (d d). acos(<argumentum>) a -1..+1 itervallumba eső argumentum arkusz koszinusz szögértékét adja radiánban (d d). A zárt intervallumból kieső argumentum EDOM hibakódot ad. A szög a 0..+ zárt intervallumban adódik.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/17. tan(<szög_radiánban>) a megadott szög tangensét adja (d d). Ha a - /2..+ /2 intervallumban megadott szög a határokhoz közel van, a függvény értéke 0 lesz és ERANGE hibakódot kapunk. atan(<argumentum>) az argumentum arkusz tangens szögértékét adja radiánban (d d). A szögérték a - /2..+ /2 nyílt intervallumban adódik. atan2(<y>,<x>) az y/x hányados arkusz tangens szögértékét adja radiánban (d d). A függvény a teljes -..+ intervallumra helyes szögértéket ad. Ha x==y==0, EDOM hibakódot ad.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/18. Exponenciális és logaritmikus függvények exp( <argumentum>) a természetes alapú logaritmus e alapszámát emeli az argumentumnak megfelelő hatványra (d d). A nem ábrázolható nagyságú, vagy kicsiségű eredmény esetén ERANGE hibakódot állít be. log(<argumentum>) log10(<argumentum>) az argumentum természetes alapú, ill. tízes alapú logaritmusát adja (d d). Nempozitív argumentum EDOM hibakódot eredményez.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/19. Egyéb matematikai függvények abs(<argumentum>) labs(<argumentum>) fabs(<argumentum>) // (int int) // (long long) // (d d) függvények az adott típusú argumentum ugyanolyan típusú abszolutértékét adják. floor(<argumentum>) az argumentumtól kisebb legnagyobb egész számot adja (d d), pl. 5.25 5; -7.2-8. Kerekítés esetén floor(argumentum + 0.5) írandó.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/20. pow(<x>,<y>) a x-nek az y kitevőre emelt hatványát adja (d d). Túlcsordulást ERANGE hibakóddal jelzi. Ha x negatív és y nem egész, EDOM hibakódot ad. sqrt(<argumentum>) az argumentum négyzetgyökét adja (d d). Negatív argumentum EDOM hibakódot ad.

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/21. Véletlenszám-generálás függvényei srand(time(null)); függvény alapállapotba hozza a véletlenszám-generátort. Használatához a time.h fájl beemelése szükséges. rand() % max 0..(max-1) közötti véletlenszámot ad.