Задачи (Практикум)
Задача 1. Да се реализира клас Билет (за театрално представление), който поддържа информация за името на представлението и цена. Съществува още билет с намаление за студенти и пенсионери, чиято цена е 50% от цената на нормалния. Той е поименен и важи след предоставяне на подходящ документ, в момента на закупуването.
Да се напише функция, която приема множество от билети (нормални и студентски) за дадено представление и извежда общата стойност на билетите.
Задача 2. Да се реализира абстрактен базов клас Set, който описва следните операции върху крайно множество от цели числа (int):
● bool member(int x): проверява дали цялото число x е елемент на множество;
● оператор []: връща i-тия елемент на множество. Индексацията на елементите е без значение;
● int length (): брой елементи в множеството;
● оператор <: проверява дали текущото множество е същинско подмножество на дадено множество s;
● булев оператор *: проверява дали две множества имат непразно сечение;
● оператор +=: променя текущото множество до обединение с параметъра.
Да се реализират наследници IntRange(*) и ArraySet. Клас IntRange наследява класа Set и представя затворен интервал от цели числа. Краищата на интервала да се задават при конструиране на обекта. ArraySet е клас, поддържащ множество от максимум n числа, където n се задава по време на конструиране на обекта. Класът да поддържа следните операции:
● bool insert(int x): добавя елемента x към множеството. Ако капацитетът е изчерпан или този елемент се съдържа в множеството, връща лъжа. Връща истина в противен случай.
Да се реализира функция bool mon([попълнете правилния тип] sets[], int n), която получава масив от обекти (или указатели към обекти) множества. Масивът е с големина n. Функцията трябва да проверява дали елементите на масива образуват строго монотонно растяща редица.
(*) Операторът += за IntRange трябва да намира покритието на двата интервала, т.е. най-малкият интервал, който съдържа едновременно и дадените два интервала.