Ć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: ex1main.tar.gz
  • Powyższy plik wymaga istnienia pliku aghInclude.h poprzez który włączane są wszystkie niezbędne pliki.

Wykonanie ćwiczenia

  1. 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.
  2. Jako typ zwracany funkcji, przyjmujemy typ double.
  3. 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
  4. 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).
  5. Jako rezultat funkcja zwraca długość sklejonego ciągu.
  6. 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.
  7. Program powinien się poprawnie kompilować i uruchomić wraz z dostarczonym plikiem ex1main.tar.gz.
pl/dydaktyka/jimp2/2016/part2/ex/ex1.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0