W dzisiejszym zadaniu tworzymy strukturę, posiadającą zarówno dane, jak funkcje. Uczymy się również, jak testować poprawność programu, wykorzystując funkcję assert().
- Zadeklaruj strukturę
fraction, składającą się z:- licznika i mianownika, jako zmiennych typu
int, - funkcji
is_correct(), typubool.
- licznika i mianownika, jako zmiennych typu
- W funkcji
is_correct()zwracaj informację, czy pierwiastek jest poprawny, czyli:- mianownik jest różny od zera,
- wartość bezwzględna licznika jest mniejsza od wartości bezwzględnej mianownika.
- W funkcji
main(),- pobierz liczbę całkowitą
n, jako argument wiersza poleceń, - zadeklaruj dynamiczny
n-elementowy łańcuch typufraction, - wypełnij go losowymi wartościami z przedziału
<-9;9>
- pobierz liczbę całkowitą
- Przepisz funkcję
is_correct()tak, aby składała się tylko z jednej linii. - Używając funkcji
assert(), przekazując do niej wynik funkcjiis_correct(), sprawdź, czy wszystkie wylosowane ułamki są poprawne. - Uzupełnij pętlę, w której losowane były wartości ułamków o zagnieżdżoną pętlę do while, sprawdzającą poprawność ułamka po wygenerowaniu, aby wszystkie testy przeszły pomyślnie.
- Napisz funkcję
gcd(), odnajdującą największy wspólny dzielnik dwóch liczb całkowitych i użyj jej w napisanej przez Ciebie funkcjishorten(), będącej częścią strukturyfraction(), do skracania ułamka.