Задача 1.

а) Да се реализира клас Issue, предсталвяващ периодично издание. Всяко периодично издание се характеризира със заглавие (низ с произволна дължина), цена за 1 брой (положително дробно число) и брой издания за година (положително цяло число).

б) За класа Issue да се дефинира голямата четворка, както и подходящи селектори и мутатори.

в) Да се реализира клас Subscription, който представлява абонамент за едно или повече периодични издания, описани чрез масив. За класа да се реализира подходящ конструктор.

г) Да се дефинира операторна функция += , която добавя издание в масива.

д) Да се дефинира метод calculatePrice(double X, double Y), който изчислява общата цена за годишен абонамент на всички издания в масива, с X% отстъпка за всяко от изданията, чиято обща годишна цена е над Y лева.



Задача 2. Да се реализира шаблон на абстрактен базов клас Set<T>, който описва следните операции върху крайно множество от елементи от тип T:

  • s.member(x): проверява дали x е елемент на s;

  • s1 == s2: проверява дали s1 и s2 съвпадат като множества;

  • s1 * s2: проверява дали s1 и s2 имат непразно сечение.

Да се реализират наследници IntRange и FiniteSet<T>. Клас IntRange представя затворен интервал от цели числа. Краищата на интервала да се задават при конструиране на обекта. FiniteSet<T> е шаблон на клас, поддържащ крайно множество от максимум n елемента от тип T, където n се задава по време на конструиране на обекта. Шаблонът да поддържа следните допълнителни операции:

  • s += x: добавя елемента x към множеството, като връща истина при успех и лъжа ако капацитетът на множеството е изчерпан или елементът x вече принадлежи на множеството;

  • s[i]:  връща елемент на множеството с номер i, където i е число от 0 до n-1.

Счита се, че типът T има коректно реализирани голяма четворка и операции за сравнение == и !=.

Да се реализира главна функция main, която въвежда от стандартния вход крайно множество от множества от цели числа, като всяко от тях може да е IntRange или FiniteSet<int>, след което дава на потребителя избор за една от следните операции:

  1. По въведено число х извежда броя на множествата, които съдържат x.

  2. Намира номерата на две множества с непразно сечение, ако има такива.

Последно модифициране: понеделник, 9 юни 2014, 22:40