C++ - funkcje cześć II
Omawiane zagadnienia.
- argumenty domniemane
- wskaźniki do funkcji
- funkcje o zmiennej liczbie argumentów
W poniższych zadaniach zakładamy, że funkcje mają nieokreśloną liczbę argumentów będących liczbami całkowitymi. Pierwszy i jedyny określony argument oznacza liczbę pozostałych argumentów
- Napisz funkcję liczącą sumę podanych argumentów
- Napisz funkcje liczącą średnią arytmetyczną, geometryczną i harmoniczną podanych argumentów
Zadanie dodatkowe: zmodyfikuj funkcje liczące średnie tak, aby można było podawać liczby o różnych typach, np. int, double, float.
Wskazówka: składnia funkcji blibliotecznej printf
Napisz funkcję o następującej sygnaturze:
void filtr(int t[], int n, bool (*f)(int));
Funkcja powinna wypisać na ekran te elementy tablicy
t, dla których warunek filtracji
f zwraca wartość
true. Argument
n określa ilość elementów tablicy
t.
- Zaimplementuj funkcję o nazwie sortuj implementującą dowolny algorytm sortowania tablicy liczb typu int.
- Zmodyfikuj powyższą funkcję tak, aby funkcja porównująca (liniowy porządek) podawana była jako argument algorytmu sortującego. Posortuj losową tablicę rosnąco oraz malejąco.
- Zmodyfikuj funkcję sortuj tak, aby domyślnym sposobem sortowania było sortowanie w porządku rosnącym
- Zaimplementuj funkcję o nazwie sortuj realizującą dowolny algorytm sortowania tablicy par liczb całkowitych (punktów z kraty na płaszczyźnie). Podobnie jak w zadaniu wyżej, funkcja porównująca (liniowy porządek) jest podana jako argument algorytmu sortującego. Posortuj losową tablicę par liczb według następujących dwóch porządków:
-
(n, m) ≤ (p, q)
jeśli
2n 3m ≤ 2p 3q
-
(n, m) ≤ (p, q)
jeśli
(n < p) lub (n=p i m ≤ q)
Zaimplementuj algorytm obliczania przybliżonej całki oznaczonej z podanej funkcji metodą trapezów.
Ustalamy podział przedziału na równe częsci:
a=x0 ≤ x1≤ x2≤ ... ≤ xn=b
Przybliżona wartość całki (wzór trapezów):
S = (0.5f(x0) + f(x1)+ ... + f(xn-1) + 0.5f(xn))*(b-a)/n
Poniższy rysunek ilustruje ideę przybliżenia pola pod wykresem funkcją jako sumy pól trapezów. Im większa ilość trapezów tym większa szansa na dokładniejsze przybliżenie pola pod wykresem funkcji.
Argumentami funkcji powinny być:
- funkcja, z której całkę liczymy
- końce przedziału [a,b]
- liczba nieujemna n - określająca na ile części dzielimy przedział [a,b]
Oblicz przybliżoną wartość całki z funkcji sinus na przedziale [0,2π] oraz z f(x)=x2 na przdziale [0,1]. Porównaj z dokładną wartością całki z wielomianu (zadanie z poprzednich ćwiczeń)
Zaimplementuj algorytm szukania miejsca zerowego funkcji w podanym przedziale metodą bisekcji. Poszukaj w internecie opisu algorytmu bisekcji.
Materiały przeznaczone wyłącznie dla studentów
Instytutu Informatyki i Matematyki Komputerowej UJ