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

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

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

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

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

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.

/* 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 8.Gy: Program struktúra

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

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

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

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

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Megoldott programozási feladatok standard C-ben

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

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

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

OOP: Java 1.Gy: Java alapok

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

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

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

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

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

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

Programozás I gyakorlat

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Algoritmusok pszeudókód... 1

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

INFORMATIKA tétel 2018

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

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

Tartalomjegyzék Algoritmusok - pszeudókód

Programozás I. gyakorlat

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.

Maximum kiválasztás tömbben

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

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)

C változók. Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! int main() {

Megoldott programozási feladatok standard C-ben

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. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Algoritmusok pszeudókód... 1

C programozás. 1 óra Bevezetés

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

Adatszerkezetek és algoritmusok

Példák tematikus csoportosításban

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

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

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

5. gyakorlat. Konstansok Tömbök Stringek

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

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

A C# programozási nyelv alapjai

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

Programozás I gyakorlat

PROGRAMOZÁSI TÉTELEK

Programozási segédlet

5. Gyakorlat. struct diak {

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

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

INFORMATIKA tétel 2019

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

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

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

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

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

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

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Í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!

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

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

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

INFORMATIKA javítókulcs 2016

1. Alapok. Programozás II

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

A programozás alapjai 1 Rekurzió

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.

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

Bevezetés a programozásba I.

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

Feladatgyűjtemény a C programozási nyelvhez

Felvételi tematika INFORMATIKA

Bevezetés az informatikába

117. AA Megoldó Alfréd AA 117.

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

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

Információs Technológia

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

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

Átírás:

10. gyakorlat Tömb, mint függvény argumentum 1. feladat: A 6. gyakorlat 1. feladatát oldja meg a strukturált programtervezési alapelv betartásával, azaz minden végrehajtandó funkciót külön függvényben valósítson meg. Emlékeztető: A HUF/EUR árfolyamot kell nyilvántartani egy negyedéven keresztül hetente. Megvalósítandó függvények: A tömb elemeinek beolvasása ellenőrzött módon. Tömb elemeinek kiírása. Tömb feltöltése véletlenszámokkal. Megadott értéknél alacsonyabb árfolyamok megszámolása. Annak megállapítása, hogy a tömb elemei monoton növő sorozatot alkotnak-e? Eldöntendő kérdés. A tömbelemek átlagának kiszámítása. A tömbelemek, és azok átlagtól való eltérésének kiírása. A tömb legkisebb elemének meghatározása. A tömb legnagyobb elemének meghatározása. a) A tömb elemeinek beolvasása ellenőrzött módon és kiírása. void kiir(float *tomb, int meret); int N = 12; kiir(tomb, N); void beolvas(float *tomb, int meret) { int i, ok; char c; for(i=0; i<meret; i++) { do { ok = 1; printf("%d. érték: ", i+1); if (scanf("%f", &tomb[i])!=1) { printf("hibás input\n"); while ((ch=getchar())!= '\n'); ok = 0; while (!ok );

void kiir(float *tomb, int meret) { for(i=0; i<meret; i++) { printf("%d. érték: %.2f \n", i+1, tomb[i]); b) Tömb feltöltése véletlenszámokkal és megadott értéknél kisebb elemek megszámolása. #include <stdlib.h> #include <time.h> void feltolt(float *tomb, int meret); int szamlal(float *tomb, int meret, float limit); int N = 12, int db; float tomb[12], limit = 300.0; feltolt(tomb, N); db = szamlal(tomb, N, limit); printf("az árfolyam értéke %d-szer volt %.2f alatt.", db, limit); void feltolt(float *tomb, int meret) { srand(time(0)); for (i=0; i<meret; i+=1) { /* rand() % (felsőhatár-alsóhatár) + alsóhatár intervallum: [alsóhatár, felsőhatár) */ tomb[i]=rand()%31+280; /* alsóhatár: 280 ; felsőhatár: 311 */ int szamlal(float *tomb, int meret, float limit) { int i, db=0; for (i=0; i<meret; i+=1) { if (tomb[i] < limit) db++; return db; c) Annak megállapítása, hogy a tömb elemei monoton növő sorozatot alkotnak-e? int monoton_e(float *tomb, int meret); //1-t (igaz) vagy 0-t (hamis) ad visssza

int i, N = 12; //Monotonitás vizsgálata if (monoton_e) printf("az Euro árfolyama monoton nőtt."); else printf("a számsorozat nem monoton növő."); int monoton_e(float *tomb, int meret) { for (i=1; i<meret; i++) if (tomb[i-1]>tomb[i]) return 1; d) A tömbelemek átlagának kiszámítása és az átlagtól való eltérés kiírása. float atlagol(float tomb[], int meret); void eltereskiir(float tomb[], int meret, float atlag); int i, N = 12; float atlag = atlagol(tomb, N); printf("\nátlag: %.2f\n", atlag); printf("atlagtol valo elteresek:\n"); eltereskiir(tomb, N, atlag); float atlagol(float tomb[], int meret) { float eredmeny, sum=0.0; for(i=0; i<meret; i++) sum += tomb[i]; eredmeny = sum/meret; return eredmeny; void eltereskiir(float tomb[], int meret, float atlag) { for (i=0; i<meret; i++) printf("%d. \t %.2f HUF/EUR \t %.2f\n", i+1, tomb[i], tomb[i]-atlag); printf("\n");

e) A tömb legkisebb elemének meghatározása. A legnagyobb elem meghatározása önálló feladat. int minindex(float *tomb, int meret); int i, N = 12; int min = minindex(tomb, N); printf("\nlegkisebb elem: %.2f", tomb[min]); int minindex(float *tomb, int meret) { int i, mini = 0; //mini: a legkisebb tömbelem indexe for(i=0; i<meret; i++) { if(tomb[i]<tomb[mini]) mini=i; return mini; Készítsünk saját függvény könyvtárat paraméterezhető méretű int, char, float és double tömb ellenőrzött beolvasását és kiírását megvalósító függvényekből. Készítsünk hozzá saját header állományt is. Alkalmazzuk ezt a könyvtárat az előző feladatban. Házi feladat: 1. A feladathoz készítsen lineáris keresést megvalósító függvényt. 2. A feladathoz készítse el a minimum kiválasztásos rendezés algoritmusát megvalósító függvényt. 3. Saját függvénykönyvtárát egészítse ki az int, float és double tömbökre vonatkozó alapalgoritmusok definíciójával (összegzés, szélsőérték kiválasztás, lineáris keresés). 2. feladat: Sztringkezelő függvények Inicializáljon, illetve Esc+Enter lenyomásáig olvasson be a szabványos bemenetről egy szöveget. Ezen a szövegen az alábbi műveleteket hajtsa végre. a) A szöveg megfordítása, illetve fordított kiírása. b) A szöveg nagybetűssé konvertálása. c) A szövegben az E betűk megszámolása. A feladatot a strukturált programtervezési alapelv betartásával oldja meg, azaz minden végrehajtandó funkciót külön függvényben valósítson meg. Figyelem! Ha a szöveg beolvasását a scanf("%s", szoveg); utasítással valósítja meg, az nem tartalmazhat space karaktert.

a) A szöveg megfordítása. #include <string.h> // sztringkezelő fv-ek #include <ctype.h> // karakterkonverziós fv-ek #define N 100 #define ESC 27 // Esc billentyű ASCII kódja Unix op.rendszerben void beolvas(char *szoveg); char* forditvamasol(const char *forras, char *cel); char szoveg[n], forditott[n]; beolvas(szoveg); printf("a beolvasott szöveg:\n%s", szoveg); char *p; p = forditvamasol(szoveg, forditott); //'p' a fordított karaktertömb elejére mutat printf("\na szöveg megfordítva:\n%s", p); void beolvas(char *szoveg) { int i=0; char ch; printf("esc+enter lenyomasaig olvassa a karaktereket:\n"); while ((ch=getchar())!= ESC) { szoveg[i] = ch; i++; szoveg[i] = '\0'; // lehet benne szóköz char* forditvamasol(const char *forras, char *cel) { char *seged = cel; int i = strlen(forras)-1; while (i>=0) { *cel = forras[i]; cel++; i--; *cel = '\0'; return seged; Szöveg megfordítása helyben: char* megfordit(char *szoveg) { char *p = szoveg;

char seged; int i, j; for(i=0, j=strlen(szoveg)-1; i<strlen(szoveg)/2; i++, j--) { seged = szoveg[i]; szoveg[i] = szoveg[j]; szoveg[j] = seged; return p; Szöveg fordított kiírása: void forditvakiir(char *szoveg) { for(i=strlen(szoveg)-1; i>=0; i--) printf("%c", szoveg[i]); printf("\n"); b) A szöveg nagybetűssé konvertálása. char* nagybetusenmasol(const char *forras, char *cel) { char *seged = cel; while (*forras) { *cel = toupper(*forras); //ctype.h függvénye cel++; forras++; *cel = '\0'; return seged; Hívása: char *p; p = nagybetusenmasol(szoveg, nagybetus); printf("\na szöveg nagybetűsen:\n%s", p); Szöveg nagybetűssé konvertálása helyben: char* nagybetusit(char *szoveg) { char *seged = szoveg; while(*szoveg) { *szoveg=toupper(*szoveg); szoveg++; *szoveg = '\0'; return seged; Hívása: char *p;

p = nagybetusit(szoveg); printf("\na szöveg nagybetűsen:\n%s", p); Szöveg nagybetűs kiírása: void nagybetuvelkiir(char *szoveg) { for(i=0; i<strlen(szoveg); i++) printf("%c", szoveg[i]); printf("\n"); c) A szövegben az E betűk megszámolása. int Ebetuk(char *szoveg) { int db=0; while(*szoveg) { if (*szoveg=='e') db++; szoveg++; return db; Hívása: int db = ebetuk(szoveg); printf("\na szövegben %d db 'E' betű van.", db);