Opublikuj swoje zlecenie za darmo i otrzymaj oferty od wykonawców freelancerów już minutę po opublikowaniu!
Napisz mały program w C++
Zlecenie jest tłumaczone automatycznie. Zaloguj się lub zarejestruj się, żeby zobaczyć oryginał
Wykonaj szablon klasy kupującego, parametryzowany przez typ produktu, który służy jako identyfikator dla każdego produktu.Dla typu produktu obiecano realizować projektant kopii (i operator przypisywania), destruktor, operator porównania i std::hash.Klasa kupującego musi realizować następujące metody publiczne:
* size_t products() const - zwraca ilość zarejestrowanych rodzajów towarów (tj.nie liczba sprzedanych jednostek,
* void sell(const Product & p, size_t amount), w którym odzwierciedla się sprzedaż kwoty towarów p
* size_t rank(const Product& p) const, - który zwraca liczbę razy, gdy najczęściej sprzedawany towar jest numerowany od 1 (jeśli kilka towarów jest sprzedawanych równomiernie, można je klasyfikować w dowolny sposób)
* const Product& product(size_t rank) const funkcja zwrotna do rank (tj.Do momentu wystąpienia wyjątku zawsze wykonuje się product(rank(p)) == p a rank(product(r)) == r)
* size_t sold(size_t r) const - ilość sprzedanych jednostek r-go najbardziej sprzedającego się produktu
* size_t sold(size_t from, size_t to) const - jest podobna do jednej wersji parametrycznej, ale zwraca kwotę sprzedanych jednostek w odstępie od i do (w tym obydwu krawędzi; w ten sposób sold(r, r) == sold(r) a sold(1, products()) jest całkowitą liczbą sprzedanych jednostek dla wszystkich rodzajów towarów; wprowadzenie do < from jest uważane za nieważne.* size_t first_same(size_t r) const a size_t last_same(size_t r) zwraca najmniejszy (odpowiednio największy) rank r', dla którego sold(r') == sold(r)
* Jeśli argumenty są niedopuszczalne (tj.Rank wykracza poza granice lub nieznane dzieło w metodzie rank ), wywołując wyjątek std::out_of_range.