===== Feladat 1 ===== Írjon egy **megfordit(char* input, int len)** nevű függvényt, amely az input vektorban megadott len-karakter hosszúságú szöveget megfordítja. void megfordit(char* input, int len) { for(int i = 0; i < len/2; i++) { char temp = input[i]; input[i] = input[len-1-i]; input[len-1-i] = temp; } } ===== Feladat 2 ===== Írjon egy kiszed(char* input, char *output) nevű függvényt, amely az input vektorban megadott szövegből kiveszi az 'a' és 'e' betűket és az output verktorba kerül az eredmény. void kiszed(char* input, char *output) { while(*input != '\0') { if(*input == 'a' || *input == 'e') { *output = *input; output++; } input++; } } ===== Feladat 3 ===== Írjon egy **char* kiegeszit(char* input, int len)** nevű függvényt, ami az input vektorban megadott **len**-karakter hosszúságú szöveg minden karaktere után egy _szóközt_ szúr be. Ha a **bemenet**: HELLO, akkor a **függvény visszatérési értéke**: H E L L O legyen. * hozzon létre egy megfelelő méretű új karaktervektort a függvényben dinamikusan * másolja bele az input karaktertömb értékeit és a szóközöket * az új karaktervektor utolsó karakterét nullázza le. char* kiegeszit(char* input, int len) { // egyel kisebb mint a kétszerese lesz az új char* char *res = (char*)malloc(len + len - 1); for(int i = 0; i < len*2-1; i++) { if(i % 2 == 0) { res[i] = input[i/2]; } else { res[i] = ' '; } } // a legutolsó karakter 0 kell legyen, a lezárás miatt res[len*2-1] = '\0'; return res; } ===== Feladat 4 ===== Írjon egy **int wordCounter(char* input, int len)** nevű függvényt, ami az input vektorban megadott **len**-karakter hosszúságú szöveget megvizsgálja és visszaadja, hogy hány szó van benne. Ha a **bemenet**: "Hello world here", akkor a **függvény visszatérési értéke**: 3. (megjegyzés: a szavak között csak 1 szóköz lehet a bemenetekben) int wordCounter(char* input, int len) { // számoljuk meg a szóközöket int space = 0; for(int i = 0; i < len; i++) { if(input[i] == ' ') { space++; } } return space + 1; } ===== Feladat 5 ===== Írjon egy **char leggyakoribb(char* input, int len)** nevű függvényt, ami az input vektorban megadott **len**-karakter hosszúságú szöveget megvizsgálja és visszaadja, hogy melyik betű fordul elő benne a legtöbbször. Ha a **bemenet**: "Hello here", akkor a **függvény visszatérési értéke**: e. (megjegyzés: a legtöbbször előfordulóból mindig 1 lesz) * készítsünk egy tömböt, ami az egyes előfordulásokat fogja tartalmazni, 0-val inicializáljuk az elemeit * karakterenként menjünk végig az input vektoron és a számlálótömb megfelelő elemét növeljük * válasszuk ki melyik elem fordul elő a tömbben legtöbbször és adjuk vissza az indexét char leggyakoribb(char* input, int len) { char gyakorisag[255]; for(int i=0; i<255; i++) { gyakorisag[i] = 0; } for(int i=0; i ===== Feladat 6 ===== Írjon egy C függvényt, folytatva a megkezdettet, amely kap egy sztringet, majd megvizsgálja, hogy a sztring palindróm-e (azaz ugyanaz, ha visszafelé olvassuk) int palindrom(const char* input) { int palindrom = 1; for (int i = 0, j = strlen(input) - 1; i < j; i++, j--) { if (input[i] != input[j]) { palindrom = 0; break; } } return palindrom; } ===== Feladat 7 ===== Írjon egy C szamol() függvényt, amely megkap egy sztringet paraméterként, majd kiírja a sztringben található számjegyek összegét. int szamjegyekOsszege(const char *sztring) { int sum = 0; for (int i = 0; sztring[i] != '\0'; ++i) { if (sztring[i] >= '0' && sztring[i] <= '9') { sum += (sztring[i] - '0'); } } return sum; } ===== Feladat 8 ===== Írjon egy "int maganhangzo_szamlal(const char*)" nevű függvényt, amely visszaadja, hány magánhangzó található a kapott szövegben (a, e, i, o, u betűk kis- és nagybetűs változata). int maganhangzo_szamlal(const char *szoveg) { int darab = 0; for (int i = 0; szoveg[i] != '\0'; ++i) { char c = szoveg[i]; if (c == 'a' || c == 'A' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O' || c == 'u' || c == 'U') { ++darab; } } return darab; } ===== Feladat 9 ===== Írjon egy "void kisbetusit(char*)" nevű függvényt, amely minden karaktert kisbetűssé alakít a kapott szövegben. #include void kisbetusit(char *szoveg) { for (int i = 0; szoveg[i] != '\0'; ++i) { szoveg[i] = (char)tolower((unsigned char)szoveg[i]); } } ===== Feladat 10 ===== Írjon egy "void eltavolit_karakter(char*, char)" nevű függvényt, amely eltávolítja a megadott karakter minden előfordulását a szövegből. void eltavolit_karakter(char *szoveg, char c) { int j = 0; for (int i = 0; szoveg[i] != '\0'; ++i) { if (szoveg[i] != c) { szoveg[j++] = szoveg[i]; } } szoveg[j] = '\0'; } ===== Feladat 11 ===== Írjon egy "int suffixel(const char*, const char*)" nevű függvényt, amely 1-et ad vissza, ha az első szöveg utolsó karakterei megegyeznek a másodikkal, különben 0-t. int suffixel(const char *szoveg, const char *suf) { int n = 0; while (szoveg[n] != '\0') { ++n; } int m = 0; while (suf[m] != '\0') { ++m; } if (m > n) { return 0; } for (int i = 0; i < m; ++i) { if (szoveg[n - m + i] != suf[i]) { return 0; } } return 1; } ===== Feladat 12 ===== Írjon egy "void rovidit(char*, int)" nevű függvényt, amely a megadott hosszra csonkolja a szöveget (és lezárja nullával). void rovidit(char *szoveg, int hossz) { if (hossz < 0) { hossz = 0; } szoveg[hossz] = '\0'; } ===== Feladat 13 ===== Írjon egy "int csak_alphanumerikus(const char*)" nevű függvényt, amely 1-et ad vissza, ha a szöveg minden karaktere betű vagy szám, különben 0-t. int csak_alphanumerikus(const char *szoveg) { for (int i = 0; szoveg[i] != '\0'; ++i) { if (!isalnum((unsigned char)szoveg[i])) { return 0; } } return 1; } ===== Feladat 14 ===== Írjon egy "void szokozok_torol(char*)" nevű függvényt, amely eltávolítja a szövegből az összes szóközt. void szokozok_torol(char *szoveg) { int j = 0; for (int i = 0; szoveg[i] != '\0'; ++i) { if (szoveg[i] != ' ') { szoveg[j++] = szoveg[i]; } } szoveg[j] = '\0'; } ===== Feladat 15 ===== Írjon egy "int leghosszabb_szo(const char*)" nevű függvényt, amely visszaadja a leghosszabb szó hosszát a szóközökkel elválasztott szövegben. int leghosszabb_szo(const char *szoveg) { int max = 0; int akt = 0; for (int i = 0;; ++i) { char c = szoveg[i]; if (c != '\0' && c != ' ') { ++akt; } else { if (akt > max) { max = akt; } if (c == '\0') { break; } akt = 0; } } return max; } ===== Feladat 16 ===== Írjon egy "void karakter_csere(char*, char, char)" nevű függvényt, amely a régi karaktert az újra cseréli a szövegben. void karakter_csere(char *szoveg, char regi, char uj) { for (int i = 0; szoveg[i] != '\0'; ++i) { if (szoveg[i] == regi) { szoveg[i] = uj; } } } ===== Feladat 17 ===== Írjon egy "void fordit_masol(const char*, char*)" nevű függvényt, amely a forrás szöveget megfordítva másolja a cél tömbbe. #include void fordit_masol(const char *forras, char *cel) { int hosszn = (int)strlen(forras); for (int i = 0; i < hosszn; ++i) { cel[i] = forras[hosszn - 1 - i]; } cel[hosszn] = '\0'; }