ZTP2024: Zadania przed lab.3

Zadania, które dotyczą zakresu materiału, jaki będzie poruszany na lab. 3. Rozwiązanie nie jest wymagane. Zadania stanowią wyłącznie pomoc w przygotowaniu się do zajęć.

Zadanie #1:

Zaprojektuj szablon kontenera typu stos posiadający zagnieżdżoną klasę reprezentującą iteratory stosu. Następnie utwórz w funkcji main obiekt reprezentujący stos do przechowywania zmiennych typu double i umieść w nim za pomocą metody push dowolną liczbę (nie większą od 100) wartości losowych rzeczywistych z przedziału 〈0, 10).

Napisz szablony trzech funkcji, które jako argument wejściowy przyjmują parę iteratorów stosu identyfikujących przedział danych z kontenera (tak jak na slajdzie 150, wykład 3), i które dla liczb w tym przedziale znajdują lub obliczają i zwracają:

  1. wartość minimalną/maksymalną,
  2. medianę,
  3. wartość średnią.

Przyjmij, że typ danych przechowywanych w kontenerze zawsze pozwala na wszystkie standardowe operacje arytmetyczne i logiczne (posiada odpowiednie operatory). Uwaga: funkcje nie otrzymują w argumentach wywołania referencji ani wskaźnika do obiektu kontenera, a jedynie iteratory wskazujące na poprawny przedział danych w nim zawartych.

Zademonstruj poprawne działanie tych szablonów funkcji wywołując je w funkcji main dla przykładowych danych zapisanych w kontenerze. Na początku na potrzeby testów poprawności spreparuj dane testowe w kontenerze tak, aby łatwo było w pamięci policzyć wynik i potwierdzić poprawność działania szablonów funkcji.


Hint: aby wygenerować wartość losową z przedziału 〈0, 1) można np. użyć funkcji:

#include <cstdlib> // zawiera RAND_MAX
#include <ctime> // zawiera funkcję time()
//generuje liczbę pseudolosową typu double z przedziału od 0.0 do 0.999...
double randdouble() {
return rand()/(double(RAND_MAX)+1);
}

int main() {
std::srand(std::time(NULL));
double x = randdouble();
}

Możliwość komentowania jest wyłączona.