• Nie Znaleziono Wyników

Imię i nazwisko: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grupa studencka: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . czas: 60 min Zadanie 1 (6pkt) N

N/A
N/A
Protected

Academic year: 2021

Share "Imię i nazwisko: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grupa studencka: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . czas: 60 min Zadanie 1 (6pkt) N"

Copied!
2
0
0

Pełen tekst

(1)

Imię i nazwisko: . . . .

Grupa studencka: . . . czas: 60 min

Zadanie 1 (6pkt)

Napisz szablon funkcji wypisującej elementy kolekcji na podany strumień. Elementy rozdzielaj spacją.

template<typename T> void print(const T& kolekcja, std::ostream& os) {

}

Które instrukcje (wewnątrz szablonu print) tworzą obiekt iteratora?

a) class T::const_iterator it;

b) typename T::const_iterator it;

c) T::const_iterator it;

Które konkretyzacje szablonu print są prawidłowe?

a) std::vector<int> v; print<std::vector<int> >(v,std::cout);

b) std::vector<int> v; print<int>(v, std::cout);

c) std::vector<int> v; print(v, std::cout);

Zadanie 2(4pkt)

Dla klasy Okno dostarczono trzy warianty operatora przypisania:

class Bitmap { /* ... */ };

class Okno { /* ... */

private:

Bitmap* b;

};

Które warianty zapewniają bezpieczne przypisanie obiektu samego do siebie?

Które warianty zostawią obiekt w poprawnym stanie, zakładając, że konstruktor Bitmap zgłosi wyjątek?

Która implementacja operatora przypisa- nia jest najlepsza dla klasy Okno(uzasadnij)?

//Implementacja 1

Okno& operator=(const Okno& o) { Bitmap* old = b;

b = new Bitmap(*o.b);

delete old;

return *this;

}

//Implementacja 2

Okno& operator=(const Okno& o) { delete b;

b = new Bitmap(*o.b);

return *this;

}

//Implementacja 3

Okno& operator=(const Okno& o) { if(this == &o) return *this;

delete b;

b = new Bitmap(*o.b);

return *this;

}

Zadanie 3(3pkt)

Jaki problem rozwiązuje wzorzec wizytatora?

(2)

Zadanie 4(7pkt)

Klasa Czas reprezentuje czas jako liczba sekund i milisekund. Po- praw błędy (znajdź min. 14). Przykład użycia jest następujący:

Czas c1(0,1500), c2(1,500);

assert( c1 + c2 == Czas(3) );

class Czas {

static const int MILI = 1000;

public:

explicit Czas(int sec = 0, int msec) : msec_(msec) { sec_ += msec_ / MILI;

}

void operator+=( Czas c ) { msec_ += c.msec_;

sec_ += c.sec_;

}

void operator+( Czas c) const { Czas o(*this);

o += c;

}

bool operator==(Czas c) { msec_ == sec_; } std::ostream operator<<(std::ostream os) {

os << sec_ << ’.’ << std::setw(3) << std::setfill(’0’) << msec_;

return os;

} private:

int sec_;

int msec_;

};

Zadanie 5 (6pkt)

class MyExc : public std::exception { char c_;

public:

MyExc(char c) : c_(c) {}

char get() const { return c_; } };

void f(char c) { std::cout << c; throw MyExc(c); std::cout << c; } struct Res {

char c_;

Res(char c) : c_(c) { std::cout << c_; }

˜Res(){ std::cout << c_; } };

void g() { Res r1(’A’);

try {

Res r2(’B’);

f(’C’);

f(’D’);

} catch(std::exception&) { f(’E’);

} catch(MyExc& e) { std::cout << e.get();

} f(’F’);

}

Podać napis, który zosta- nie wyświetlony po wykonaniu funkcji zad5:

void zad5() { try {

g();

} catch(MyExc& e) { std::cout << e.get();

} catch(...) { std::cout << ’M’;

}

std::cout << std::endl;

}

Ile razy jest wołana funkcja f

Ile razy jest wołany konstruk- tor klasy Res

Zadanie 6 (4pkt)

Podaj trzy zalety stosowania mechanizmu wyjątków do obsługi błędów w porównaniu ze zmienną globalną errno

1) 2)

3)

B

Cytaty

Powiązane dokumenty

Pełnomocnik Dyrektora
 Instytutu Prawa, Administracji i Ekonomii Społecznej
 Wydziału Politologii Uniwersytetu Pedagogicznego
 im.. (imię i nazwisko) z odbywania praktyk

Za trzy prawidłowe odpowiedzi na dane zadanie otrzymuje się dodatkowo 1 2 punkta.)..

Wskazujemy jedną z kart i w tym momencie słyszymy od prowadzącego grę: ”Graczu, odkryję jedną z kart, a Ty się zastanów, czy nie chcesz zmienić swojego wyboru”, po czym

Round the lengths of sides to the nearest 10 and hence estimate the area of the rectangle.. Calculate the per- centage error of

[r]

Oblicz prawdopodobieństwo tego, że rodzice stoją na skrajnych miejscach (matka na jednym końcu rzędu, ojciec na drugim), a rodzeństwo stoi obok siebie.. Zadanie 5

Oblicz prawdopodobieństwo, że wylosowano więcej kul białych niż czarnych, jeśli wiadomo, że wylosowano co najmniej jedną czarną kulę... Oblicz prawdopodobieństwo, że

Wnioski (proszę uwzględnić stopień rozdzielenia składników, ilość frakcji, porównać zmierzone temperatury z wartościami podanymi w literaturze, wyjaśnić