Задача за поправителен изпит по ООП (втора част)
1. Да се дефинира клас Word, описващ дума, съставена от не повече от 20 символа от тип char. Класът да съдържа следните операции:
-
операция [] за получаване на i-тия пореден символ в думата
-
операции + и += за добавяне на един символ в края на думата. Ако думата вече има 20 символа, операциите да нямат ефект
-
операции < и == за сравнение на думи спрямо лексикографската наредба
-
подходящи конструктори
2. Да се дефинира клас Sentence, описващ символен низ, състоящ се от произволен брой символи от тип char. Низът да се запазва в динамичната памет. Класът да поддържа следните операции
-
функция addWord за добавяне на дума (обект от клас Word) към края на изречението
-
класът да притежава всички необходими методи за осигуряване на правилен жизнен цикъл на обектите
-
метод за извеждане в изходен поток
3. Да се дефинира клас EnglishSentence, наследник на клас Sentence, който допуска изречения, съставени единствено от малки и големи латински букви и символите интервал, запетая, удивителен знак и точка.
Упътване: за целта да се дефинира подходящ вариант на метода addWord.
4. Да се дефинира функция
void addAndPrint ([подходящ тип] sentences, [подходящ тип] words[,...]),
където sentences е масив от произволен брой разнородни изречения, всяко от които може да е както обект от клас Sentence, така и обект от клас EnglishSentence, a words е масив от произволен брой думи. Ако е необходимо, функцията да има и допълнителни параметри. Функцията опитва да добави всяка от думите от words към всяко от изреченията в sentences чрез извикване на метода addWord и след това извежда всички така получени изречения.
За тази задача не се допуска използване на std::vector или други стандартни структури от данни от STL или предварително реализирани такива.