====== Ćwiczenie 1: Szablony funkcji ====== ===== Po co ===== * Doskonalenie umiejętności przeładowywania operatorów. * Poznanie sposobu interpretacji szablonu. * Zapoznanie się z mechanizmem działania szablonów. * Definiowanie szablonów funkcji. * Definiowanie funkcji specjalizowanych. * Umiejętność zastosowania szablonów funkcji dla typów wbudowanych, jak również typów definiowanych przez użytkownika. ===== Oddawanie ćwiczenia ===== * Przed oddaniem ćwiczenia, program należy przetestować używając następującego pliku main w paczce: {{:pl:dydaktyka:jimp2:2016:part2:ex:ex1main.tar.gz|}} * Powyższy plik wymaga istnienia pliku ''aghInclude.h'' poprzez który włączane są wszystkie niezbędne pliki. ===== Wykonanie ćwiczenia ===== - Definiujemy szablon funkcji **''suma''**, która przyjmuje **''dwa''** argumenty: * Argument typu **parametrycznego**, który umożliwia odniesienie się do składników sumy. * Długość tablicy (ew. ilość składników sumy) jako wartość typu **''int''**. - Jako typ zwracany funkcji, przyjmujemy typ **''double''**. - Prawidłowo zdefiniowany szablon funkcji **''suma''** powinien wyświetlić na ekranie: * poszczególne składniki sumy oraz, * wynik w formacie np.: ''s1 + s2 + s3 = wynik'' - Definiujemy **funkcję specjalizowaną** dla typu **''char* *''** w taki sposób aby sklejała kolejne elementy tablicy w jeden ciąg. Podobnie jak w przypadku szablonu funkcji, funkcja specjalizowana powinna wyświetlić: * wszystkie poszczególne składniki (tutaj wyrazy), * sklejony ciąg, oraz * jego długość. To wszystko w formacie np.: ''abc+ghi+xyz=abcghixyz(9)''. - Jako **rezultat** funkcja zwraca **długość** sklejonego ciągu. - Definiujemy klasę **''aghFib''** która oblicza **wartość wskazanego wyrazu** ciągu Fibonacciego. Klasa musi być tak zdefiniowana aby obiekt tej klasy mógł być użyty jako **argument funkcji szablonowej!** tzn. nie definiujemy funkcji specjalizowanej dla tego typu. - Program powinien się poprawnie kompilować i uruchomić wraz z dostarczonym plikiem {{:pl:dydaktyka:jimp2:2016:part2:ex:ex1main.tar.gz|}}.