11  Napisy

  1. Napisz funkcję length, która jako argument otrzymuje napis i zwraca jako wartość jego długość. Użyj typu char i nie korzystaj ze wbudowanych funkcji poza operacjami wejścia/wyjścia. Stwórz przypadek testowy.

  2. Napisz funkcję countNums, która przyjmuje jako argument tablicę znaków typu char i zwraca liczbę znaków w tej tablicy, które są cyframi. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla swojej funkcji.

  3. Napisz funkcję countVow przyjmującą jako argument tablicę znaków typu char i zwracającą liczbę znaków w tej tablicy, które są samogłoskami z alfabetu łacińskiego. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  4. Napisz funkcję cmpStrNew przyjmującą dwa argumenty typu char[] (tablice znaków) i zwracającą 1, jeśli napisy są identyczne, oraz 0 w pozostałych przypadkach. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  5. Napisz funkcję lexComp przyjmującą dwa argumenty typu char[] (tablice znaków) i zwracającą 1, jeśli pierwszy napis jest wcześniej w porządku leksykograficznym niż drugi, oraz 0 w pozostałych przypadkach. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  6. Napisz funkcję toLowerNew, która przyjmuje jako argument tablicę znaków typu char i zamienia w niej wszystkie duże litery na małe. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  7. Napisz funkcję toUpperNew, która przyjmuje jako argument tablicę znaków typu char i zamienia w niej wszystkie małe litery na duże. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  8. Napisz funkcję strCopyNew, która otrzymuje dwa argumenty typu char[] (tablice znaków): źródłową i docelową. Funkcja przepisuje napis znajdujący się w tablicy źródłowej do tablicy docelowej. Zakładamy, że w tablicy docelowej jest wystarczająco dużo miejsca. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  9. Napisz funkcję strNcopy, która otrzymuje trzy argumenty: dwie tablice znaków nap1, nap2 oraz dodatnią liczbę całkowitą n. Funkcja przekopiuje n pierwszych znaków z napisu przechowywanego w tablicy nap1 do tablicy nap2. Jeśli napis w tablicy nap1 jest krótszy niż n znaków, funkcja przepisuje cały napis. Funkcja gwarantuje, że na końcu napisu w tablicy nap2 znajdzie się znak null-terminujący ('\0'). Zakładamy, że w tablicy nap2 jest wystarczająco dużo miejsca. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  10. Napisz funkcję strConcat, która otrzymuje jako argumenty trzy tablice znaków: nap1, nap2 oraz nap3. Funkcja zapisuje do tablicy nap3 konkatenację (połączenie) napisów znajdujących się w tablicach nap1 i nap2. Zakładamy, że w tablicy nap3 jest wystarczająco dużo miejsca. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  11. Napisz funkcję rmLower, która przyjmuje jako argument tablicę znaków typu char i usuwa z niej wszystkie znaki będące małymi literami. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  12. Napisz funkcję rmDigits, która przyjmuje jako argument tablicę znaków typu char i usuwa z niej wszystkie znaki będące cyframi. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  13. Napisz funkcję cutStr, która otrzymuje jako argumenty tablicę znaków typu char oraz dwie liczby całkowite n i m, i wycina z otrzymanego napisu znaki o indeksach od n do m (przy założeniu, że n<m). Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  14. Napisz funkcję wStrCopyNew, która otrzymuje dwa argumenty typu wchar_t[] (tablice znaków): źródłową i docelową. Funkcja przepisuje napis znajdujący się w tablicy źródłowej do tablicy docelowej. Zakładamy, że w tablicy docelowej jest wystarczająco dużo miejsca. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  15. Napisz funkcję wStrConcat, która otrzymuje jako argumenty trzy tablice znaków: nap1, nap2 oraz nap3 (użyj typu znakowego wchar_t). Funkcja zapisuje do tablicy nap3 konkatenację (połączenie) napisów znajdujących się w tablicach nap1 i nap2. Zakładamy, że w tablicy nap3 jest wystarczająco dużo miejsca. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia. Stwórz przypadek testowy dla tej funkcji.

  16. Napisz funkcję w16, której argumentem jest napis. Jeśli napis zawiera inne znaki niż cyfr, to funkcja ma zwracać zero. Jeśli napis zawiera tylko cyfry, funkcja ma zwrócić liczbę całkowitą powstałą z przepisania kolejno znaków cyfr. Załóż, że napis jest długości dokładnie 3. W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Wykorzystaj w rozwiązaniu typ wchar_t.

  17. Napisz funkcję rmOdd, której argumentem jest napis. Funkcja ma za zadanie usunąć znaki z napisu o nieparzystych indeksach. Stwórz przypadek testowy.

  18. Napisz funkcję copyEveryThird, której argumentem jest napis. Funkcja ma za zadanie zwrócić nowy napis, który zawiera tylko co trzeci znak z oryginalnego napisu. Stwórz przypadek testowy.

Przykład: Dla napisu "ABCXYZ" funkcja powinna zwrócić "AX".

  1. Napisz funkcję indexLower, której argumentem jest napis. Funkcja zwraca numer indeksu, na którym występuje pierwsza od lewej mała litera. W przypadku pustego napisu lub braku małych liter, funkcja powinna zwracać zero. W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy.

  2. Napisz funkcję countOdds, której argumentem jest napis. Funkcja ma zwrócić liczbę znaków cyfr nieparzystych występujących w napisie. Stwórz przypadek testowy.

  3. Napisz funkcję toLowerNew, która przyjmuje jako argument wskaźnik do napisu typu const char* i zwraca wskaźnik do nowego napisu, w którym wszystkie duże litery zostały zamienione na małe. Oryginalna tablica znaków pozostaje niezmieniona. Pamiętaj o alokacji pamięci dla nowego napisu. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia i funkcji alokacji pamięci. Stwórz przypadek testowy dla tej funkcji.

  4. Napisz funkcję toUpperNew, która przyjmuje jako argument wskaźnik do napisu typu const char* i zwraca wskaźnik do nowego napisu, w którym wszystkie małe litery zostały zamienione na duże. Oryginalna tablica znaków pozostaje niezmieniona. Pamiętaj o alokacji pamięci dla nowego napisu. Nie korzystaj ze wbudowanych funkcji języka oprócz operacji wejścia/wyjścia i funkcji alokacji pamięci. Stwórz przypadek testowy dla tej funkcji.

  5. Napisz funkcję countSpaces, której argumentem jest napis. Funkcja ma zwrócić liczbę znaków spacji występujących w napisie. Stwórz przypadek testowy. Przykład: dla napisu "abcD" funkcja ma zwrócić 0, dla napisu "ABC def" ma zwrócić 1.

  6. Napisz funkcję lowercaseOdd, której argumentem jest napis. Funkcja ma za zadanie zamienić znaki o nieparzystych indeksach na małe litery (o ile na tym miejscu jest znak wielkiej litery). Stwórz przypadek testowy. Przykład: Wejście: "123ABC", Wyjście: "123aBc".

  7. Napisz funkcję strDig, która dostaje w argumencie napis. Funkcja ma zwrócić długość napisu, gdy napis nie zawiera cyfr. Jeśli napis zawiera cyfrę, to za każdą cyfrę należy dodać 1 do długości napisu i to zwrócić. Stwórz przypadek testowy. Przykład: dla napisu "jdET" funkcja ma zwrócić 4, dla napisu "abc3334" ma zwrócić 11, dla napisu "12" ma zwrócić 4.

  8. Napisz funkcję capitalizeEven, której argumentem jest napis. Funkcja ma za zadanie zamienić znaki o parzystych indeksach na wielkie litery (o ile na tym miejscu jest znak małej litery). Stwórz przypadek testowy. Przykład 1: Wejście: "Python", Wyjście: "PyThOn". Przykład 2: Wejście: "programming", Wyjście: "pRoGrAmMiNg".

  9. Napisz funkcję indexUpperCase, której argumentem jest napis. Funkcja zwraca numer indeksu, na którym występuje ostatnia wielka litera. W przypadku pustego napisu lub braku wielkich liter, funkcja powinna zwracać -1. W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Przykład: Dla napisu "AbcdR" funkcja powinna zwrócić 5. Dla napisu "ala ma kota" funkcja powinna zwrócić -1.

  10. Napisz funkcję indexLastDigit, której argumentem jest napis. Funkcja zwraca numer indeksu, na którym występuje ostatnia cyfra występująca w napisie. W przypadku pustego napisu lub braku cyfry w napisie, funkcja powinna zwracać -1. W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Przykład: dla napisu "abc6D" funkcja ma zwrócić 3, dla napisu "ABC def" ma zwrócić -1.

  11. Napisz funkcję removeLastDigit, której argumentem jest tablica znaków. Funkcja usuwa ostatni znak cyfry występującej w tej tablicy znaków. W przypadku pustego napisu lub braku cyfry w napisie, funkcja nie powinna nic robić. W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Przykład: dla tablicy znaków "a2bc6D" funkcja ma zmienić na "a2bcD".

  12. Napisz funkcję countDigits, której argumentem jest napis. Funkcja ma za zadanie zwrócić liczbę znaków, które są cyframi od 5 do 9. W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Przykład: dla napisu "ab57cD" funkcja ma zwrócić 2, dla napisu "ABC def" ma zwrócić 0.

  13. Napisz funkcję hexLen, która dostaje w argumencie napis. Funkcja ma zwrócić długość napisu, gdy napis nie zawiera cyfr w systemie szesnastkowym (w przypadku liter uwzględnij małe i duże litery). Jeśli napis zawiera taką cyfrę, to za każdą cyfrę należy odjąć 1 do długości napisu i to zwrócić. Stwórz przypadek testowy. Przykład: dla napisu "ABXYZ4" funkcja powinna zwrócić \(6-3=3\).

  14. Napisz funkcję countHexDigit, której argumentem jest napis. Funkcja ma za zadanie zwrócić liczbę znaków, które są cyframi z systemu szesnastkowego (w przypadku liter policz tylko małe litery). W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Przykład: dla napisu "ABC6xyza" funkcja powinna zwrócić 2.

  15. Napisz funkcję hexLen, która dostaje w argumencie napis. Funkcja ma zwrócić długość napisu, gdy napis nie zawiera cyfr w systemie szesnastkowym (w przypadku liter uwzględnij małe i duże litery). Jeśli napis zawiera taką cyfrę, to za każdą cyfrę należy dodać 1 do długości napisu i to zwrócić. Stwórz przypadek testowy. Przykład: dla napisu "ABXYZ4" funkcja powinna zwrócić \(6+3=9\).

  16. Napisz funkcję countHexDigit, której argumentem jest napis. Funkcja ma za zadanie zwrócić liczbę znaków, które są cyframi z systemu szesnastkowego (w przypadku liter policz tylko duże litery). W zadaniu nie korzystaj z funkcji bibliotecznych poza instrukcjami wejścia/wyjścia. Stwórz przypadek testowy. Przykład: dla napisu "ABC6xyza" funkcja powinna zwrócić 4.