1. Zmodyfikuj funkcje operujące na ułamkach tak, by wykluczały wystąpienie zera w mianowniku. Wskazówka: zastosuj instrukcję if. . . then. . . else i zastosuj wyjątek exception DzieleniePrzezZero.
2. Zadeklaruj typ danych umożliwiający reprezentację ułamków w postaci rekordów. Podaj definicje odpowiednich funkcji.
3. Zmodyfikuj funkcje operujące na ułamkach tak, by następowało każdorazowe skracanie wynikowego ułamka (licznika i mianownika). Użyj funkcji skroc.
4. Ułamki: zmodyfikuj funkcję naSt ring - tak, by ułamek był wyświetlany w postaci właściwej, czyli część całkowita i ułamkowa. Wskazówka: po wyznaczeniu wartości bezwzgl. licznika i mianownika wydziel część całkowitą przez dzielenie div i pozostały licznik - reszta z dzielenia, operator mod.
Wsk.: zapisz dwa warunki dla (m, 0) i (m, n).
6. Zadeklaruj samodzielnie infiksową funkcję potęgowania AA,
wskazówka: zastosuj dwa warianty - mAAn = m * mAA(n-l), mAA0=l
7. Opracuj zestaw funkcji arytmetycznych dla liczb zespolonych (++,--,**,// - zob. Wykład 2-Przy kłady programów). Sprawdź działanie tych funkcji na kilku przy Wadach. Uzupełnij zestaw o funkcję ‘sqrt’ obliczającą pierwiastki liczby zespolonej A+j-B.
Wsk.: Każdy pierwiastek a+j-b musi spełniać równanie (a+j b) (a+j b)=(A+j-B)
8. Napisz funkcję obliczającą ułamek do potęgi całkowitej nieujemnej n. Napisz funkcję pomocniczą podnoszącą liczbę do potęgi z dwoma wariantami: - m**n = m * m**(n-1), m**0=l
9. a) Zadeklaruj i przetestuj działanie funkcji test: int*int*int—>bool, taką że
test(a, b, C) dla b>a jest wartością logiczną powyższego wyrażenia. Zatem test(a, b, c) sprawdza, czy liczby w przedziale (a, b) nie są podzielne przez c.
b) Zadeklaruj infiksowy operator równoważności i sprawdź jego działanie.
10. Zadeklaruj i przetestuj działanie funkcji pierwsza: int—»bool, gdzie pierwsza (n)=true wtedy i tylko wtedy, gdy n jest liczba pierwszą. Wsk.: Liczba pierwsza to taka, której podzielnikami są tylko 1 i ona sama. Skonstruuj funkcję pomocniczą pierwsza' z dwoma wariantami (kończącym rekurencję) pierwsza' (n, 2) i pierwsza' (n, k) wywoływaną przez zasadniczą:
fun pierwsza n = pierwsza1 (n,n-l);