UWAGA w zadaniach 1, 2, 3, 4 używamy tylko wskaźników. Np

Transkrypt

UWAGA w zadaniach 1, 2, 3, 4 używamy tylko wskaźników. Np
UWAGA w zadaniach 1, 2, 3, 4 używamy tylko wskaźników.
Np. zapis nps[i] jest niedopuszczalny
Zad1
Napisz funkcję
void opak(char *napis),
która odwraca napis, np. jeśli
nps jest zdefiniowane:
char nps[]="Alicja";
to po komendach:
opak(nps);
puts(nps);
ma się pojawić na ekranie napis:
ajcilA
Zad2
Napisz funkcję:
void cezar(char napis[]),
która szyfruje napis przesuwając litery o 1 w "górę alfabetu", zaś
'z' zamienia na 'a' (znaków innych niż litery nie zmieniamy, a liter polskich
nie uznajemy).
w przykładzie jak z Zad1 ma się pojawić: Bmjdkb
Zad3
Napisać funkcję mnożącą dwie macierze 3x3
Zad4
Zmodyfikować funkcję selsort z programu wybieranie.c z wykładu 6
do "postaci wskaźnikowej".
Zad5
Napisać funkcję
void ciagi(int n),
która drukuje wszystkie ciągi o wyrazach 0, 1
i długości n
wywołanie:
ciagi(2)
ma wydrukować
0
0
0
1
1
0
1
1
(albo te same ciągi w innej kolejności)
Zad6
Zbiór Cantora jest dość złożonym obiektem matematycznym,
który rysuje się za pomocą kolejnych przybliżeń
(w których stopniowo rośnie "powiększenie").
Pierwsze przybliżenie wygląda tak:
* *
// gwiazdka, spacja, gwiazdka
Dla n>1, n-te przybliżenie wygląda tak:
(n-1-sze przybliżenie)(spacje)(n-1-sze przybliżenie),
przy czym liczba spacji jest taka, jak długość n-1-szego przybliżenia,
czyli dokładnie 3^(n-1).
Np. trzecie przybliżenie wygląda tak:
* *
* *
* *
* *
Napisz funkcję
void cantor(int n),
która drukuje n-te przybliżenie zbioru Cantora.
Dla ułatwienia możesz na końcu nie drukować znaku nowej linii.
Zad7
Napisz funkcję
void katalogi(int n),
która drukuje (w sposób zgodny z przykładem podanym poniżej)
hierarchię katalogów i plików.
Zakładamy, że w systemie:
- jest jeden katalog główny na głębokości 0,
- wszystkie pliki znajdują się na głębokości n,
- każdy katalog zawiera dokładnie dwa podkatalogi (jeśli jest na głębokości < n1)
lub dokładnie dwa pliki (jeśli jest na głębokości n-1).
Np. dla n=2 funkcja powinna wydrukować:
- katalog
|- katalog
| |- plik
| |- plik
|- katalog
| |- plik
| |- plik
Zad8 Bernard gra w nastepującą jednoosobową grę:
- na poczatku dana jest całkowita dodatnia liczba n
- w każdym ruchu Bernard wykonuje na aktualnej liczbie jedną z operacji:
- dzielenie przez 5 (bez reszty)
- zmniejszenie o 1
- zmniejszenie o 215
przy czym dozwolone sa tylko te operacje, które dają wynik całkowity dodatni
- celem gry jest otrzymanie liczby 1 w najmniejszej możliwej liczbie ruchow.
Np.
- zaczynając od 4 można dojść do 1 w trzech ruchach (-1, -1, -1)
- zaczynając od 34 można dojść do 1 w dwoch ruchach (:5, :5)
- zaczynając od 216 można dojść do 1 w jednym ruchu (-215).
Napisz funkcję
int ile_krokow(int n),
która dla danej liczby n<=500 zwraca najmniejszą liczbę ruchów prowadzących z n
do 1.
Dostaniesz dodatkowe punkty, jeśli funkcja będzie dawała wynik natychmiast (w
sekundę) dla n<=1000000.

Podobne dokumenty