Spis treści

Iteratory

int tab [] = {42, 3, 5};
 
// odczyt kolekcji
for(auto x: tab) 
{
  cout << x << endl;
}
 
// modyfikacja kolekcji
for(auto &x: tab) 
{
  x++;
}

Ćwiczenie: Iteratory klasy Wektor

Rozszerz implementację szablonu klasy Wektor z poprzednich zajęć (plik wektor.h) dodając do niej obsługę iteratorów.
Klasa Wektor powinna udostępniać:

W tym przypadku iterator swobodnego dostępu będzie po prostu wskaźnikiem typu T*. Wystarczy więc przezwać ten typ używając polecenia typedef lub using.

Napisz program, który przetestuje działanie iteratorów w klasie Wektor:

Obsługa wyjątków

Przykład:

try
{
   int a=1;
   throw a;
}
catch(int b)
{
   // wyjatek typu int
}
catch(...)
{
   // wszystkie wyjatki
}

Ćwiczenie: Wyjatkowe sytuacje klasy Wektor

W pliku nagłówkowym wyjatki.h zadeklaruj klasy wyjątków: Wyjatek, ZlyIndeksWektora i BrakPamieci i dodaj do szablonu klasy Wektor polecenia rzucające obiekty tych klas w razie zaistnienia sytuacji wyjątkowych.

W zależności od konfiguracji, operator new w przypadku wystąpienia błędu może także rzucać wyjątek. Można temu zapobiec wymuszając aby w przypadku błędu operator ten zwracał NULL.
#include <new.h>
int *a = new(std::nothrow) int[1];
if(a==0) throw "Brak pamieci";

Napisz program, który wywoła sytuacje wyjątkowe dla klasy Wektor i spowoduje rzucenie wyjątków ZlyIndeksWektora oraz BrakPamieci. Złap wyjątki i wypisz komunikat błedu.

Zadanie 9: Sortowanie liczb i słów

Napisz program, który posortuje liczby i wyrazy wprowadzone przez użytkownika.

Dane wejściowe:

Zasady przetwarzania danych:

Wynik działania programu:

Program przestaje wczytywać dane, gdy użytkownik wprowadzi pustą linię (długość napisu równa 0). Następnie program wypisuje:

Do kolekcjonowania napisów i liczb wykorzystaj klasę Wektor a do posortowania obu sekwencji wykorzystaj funkcję sort() z biblioteki STL.

Przykład działania programu:

Dla danych wejściowych

zxcvbn
1234
asdf
42
3.14
qwerty
10e100000
10e2

program wypisze

Liczby:
3.14
42
1000
1234

Napisy:
asdf
qwerty
zxcvbn

Rozwiązanie w postaci plików nagłówkowych *.h i źródłowych *.cpp umieść w Moodle Zadanie 9