ZSI.II rok.Laboratorium.PO rok 97/98 ------------------------------------- Drugie zadanie zaliczeniowe z C++. Zaimplementuj nastepujace klasy: 1) ZbInt Klasa abstrakcyjna realizujaca zbior liczb calkowitych. Powinna udostepniac nastepujace metody wirtualne: - ZbInt& operator+=(int) dodawanie liczby do zbioru - ZbInt& operator-=(int) usuwanie liczby ze zbioru - int nalezy(int) sprawdzanie czy liczba nalezy do zbioru - void czysc() usuwanie wszystkich elementow ze zbioru - ZbIter* daj_iter() generowanie iteratora dla zbioru oraz nastepujace operatorowe metody niewirtualne: - ZbInt& operator+=(ZbInt&) dodawanie zbioru do zbioru - ZbInt& operator-=(ZbInt&) usuwanie zbioru ze zbioru Nalezy takze zdefiniowac operator: - ostream& operator<<(ostream&, ZbInt&). Uwaga: klasa ZbInt nie moze zawierac implementacji zbioru, a mimo to ostatnie trzy operatory nalezy nie tylko zadeklarowac ale i zaimplementowac. 2) ZbIntIter Klasa abstrakcyjna realizujaca iterator po zbiorze ZbInt. Powinna zawierac nastepujace metody: - void na_poczatek() przejscie na poczatek zbioru - int jest_elt() sprawdzenie czy jest biezacy element - int biez() pobranie biezacego elementu (o ile jest_elt()) - void nast() przejscie do nastepnego elementu zbioru (o ile jest_elt()) 3) ZbIntImpl Podklasa klasy ZbInt, dowolna sensowna implementacja zbioru. 4) ZbImplIter Podklasa klasy ZbIntIter, dowolna sensowna implementacja iteratora zbioru. Uwaga: we wszystkich klasach nalezy zdefiniowac konieczne konstruktory i destruktory. Korzystajac z tych klas napisz program obliczajacy n poczatkowych liczb pierwszych, gdzie n jest liczba wprowadzana przez uzytkownika z klawiatury. Liczby pierwsze nalezy znajdowac metoda sita Eratostenesa. Funkcja realizujaca ten algorytm powinna miec nastepujacy naglowek: void sito(ZbInt&, int) gdzie pierwszy parametr jest jakims zbiorem (trzeba bedzie w tej funkcji najpierw usunac z niego wszystkie elementy), zas drugi parametr okresla z jakiego zakresu liczb pierwszych szukamy. Pytania i uwagi do tego zadania prosze kierowac pod adres: janusz@mimuw.edu.pl