Poniższy zestaw zadań ma za zadanie sprawdzić wiedzę dotyczącą przestawiania liter, liczb w tablicach oraz łańcuchach znaków. Zadania powinny być wykonywane w przedstawionej kolejności, ponieważ część zadań łączy się z poprzednimi.
Każda funkcja powinna zostać przetestowana. Można założyć, że wprowadzone dane są poprawne. Każdy argument funkcji powinien być pobierany ze standardowego strumienia w funkcji main().
Napisz program string wspak(string s), która zwróci wspak przekazany w argumencie s tekst.
Przykładowo dla wartości s = "abc123" program ma wypisać "321cba".
Napisz funkcję string przesun(string s, int ile), która wszystkie znaki przesunie o ile pozycji. Jeśli dany znak ma zostać przesunięty poza długość tekstu wejściowego s to znak należy przestawić na początek. Analogicznie jeśli znak ma się znaleźć na pozycji ujemnej to należy go ustawić na końcu tekstu.
Przykładowo dla wartości s = "abc123" i ile = 1 program ma wypisać "3abc12". Z kolei dla wartości s = "xyz456" i ile = -3 poprawnym wynikiem będzie "456xyz".
Napisz funkcję string zmienKolejnoscPrawo(string s, unsigned int ile), która ma za zadanie zamienić miejscami znak na pozycji i z znakiem na pozycji i + ile w sposób cykliczny. Zakładamy, że zamianę rozpoczynamy od strony lewej do prawej.
Przykładowo dla tekstu s = "abc123" i ile = 2 otrzymamy "ab23c1".
Napisz funkcję string zmienKolejnoscLewo(string s, unsigned int ile), która ma za zadanie zamienić miejscami znaki jak poprzednio, ale zakładamy, że zamianę rozpoczynamy od strony prawej do lewej.
Przykładowo dla tekstu s = "abc123" i ile = 1 otrzymamy "a3bc12".
Napisz program, który przetestuje działanie obu napisanych funkcji. Program ma wczytać od użytkownika pewien tekst, a następnie liczbę o jaką będzie dokonywana zamiana. Wyświetl najpierw wynik działania funkcji zmienKolejnoscPrawo() jako szyfrogram, a następnie rozszyfruj wyświetlony tekst przy pomocy funkcji zmienKolejnoscLewo() i wyświetl go jako tekst rozszyfrowany.
Napisz funkcję string przestawKolumny(string s, unsigned int blok), która podzieli tekst s na fragmenty tekstu o długości blok, a następnie jakby ustawiwszy je jeden pod drugim przesunie w dół każdą z kolumn w sposób cykliczny. Podczas przesuwania należy przesunąć o tyle pozycji w dół jaki indeks ma kolumna (indeksujemy kolumny od 1). Wyniiem jest odczytanie znaków w kolejnych wierszach do lewej do prawej.
Przykładowo dla tekstu s = "123456789" i blok = 3 otrzymamy "753186429".
Napisz funkcję string przestawKolumnyOdwrotnie(string s, unsigned int blok), która będzie miała działanie przeciwne do funkcji przestawKolumny().
Przykładowo dla tekstu s = "123456" i blok = 3 otrzymamy "426153".
Napisz program, który przetestuje działanie obu napisanych funkcji. Program ma wczytać od użytkownika pewien tekst, a następnie liczbę o jaką będzie dokonywana zamiana. Wyświetl najpierw wynik działania funkcji przestawKolumny() jako szyfrogram, a następnie rozszyfruj wyświetlony tekst przy pomocy funkcji przestawKolumny() i wyświetl go jako tekst rozszyfrowany.
Napisz funkcję string pierwszyzOstatnim(string s, int ile), która utworzy nowy łańcych znaków. W celu utworzenia wyniku należy po kolei dopisywać do niego pierwszy niewybrany znak oraz ostatni niewybrany znak dotychczas. Proces powinien zostać przeprowadzony ile razy.
Przykładowo dla tekstu s = "abc123" i ile = 1 otrzymamy "a3b2c1". Jednak, gdyby parametr ile = 2 to wynikiem będzie "a13cb2".
Napisz funkcję int ileZamian(string s), która zwróci o jakiej wartości musi być parametr ile, aby po wywołaniu funkcji pierwszyzOstatnim(s, ile) wynik był taki sam jak tekst wejściowy s.
Przykładowo dla tekstu s = "abc123" poprawnym wynikiem jest 5.