Monika Dekster

Laboratorium 8. Przeładowanie operatorów

Zadania

  1. Napisz klasę Set opisującą podzbiór liczb całkowitych.

    Zaimplementuj następujące metody klasy:

    • Konstruktory
    • Destruktor
    • operator+=() - suma zbiorów
    • operator-=() - różnica zbiorów
    • operator*=() - przecięcie zbiorów
    oraz funkcje
    • operator+() - suma zbiorów
    • operator-() - różnica zbiorów
    • operator*() - przecięcie zbiorów
    • operator<<() - wypisz elementy zbioru
    • main() sprawdzającą poprawność zaimplementowanych metod

    Pamiętaj o usunięciu powtarzających się elementów ze zbiorów wynikowych.

  2. Napisz klasę Complex implementującą liczbę zespoloną. Klasa powinna zawierać dwa pola rzeczywiste odpowiadające części rzeczywistej i urojonej liczby.

    Zaimplementuj następujące funkcje składowe:

    • Complex(double re, double im); // konstruktor
    • Complex& operator+=(const Complex& c); // dodaj liczbę c do aktualnej liczby
    • Complex& operator-=(const Complex& c); // odejmij liczbę c od aktualnej liczby
    • Complex& operator*=(const Complex& c); // pomnóż liczbę c przez aktualną liczbę
    • Complex& operator/=(const Complex& c); // podziel aktualną liczbę przez c

    Wykorzystując powyższe operatory zdefiniuj następujące funkcje zewnętrzne:

    • Complex operator+(const Complex& c1, const Complex& c2);
    • Complex operator-(const Complex& c1, const Complex& c2);
    • Complex operator*(const Complex& c1, const Complex& c2);
    • Complex operator/(const Complex& c1, const Complex& c2);
    • ostream& operator<<(ostream& os, const Complex& c);

    Funkcja main() powinna testować działanie wszystkich wymienionych wyżej funkcji.