Примерни задачи за контролно
Задача 1. Нека е дадена биекция c:char -> int. Кодиране на символния низ a1,...,ak наричаме редицата от стойности от тип int n1,...,nk, където ni = c (ai). Да се създаде клас Encoding, която реализира съответствието “символ – код” за единичен символ.
Да се реализира на клас Досие (Dossier), който съдържа КОДИРАН текст с
произволна дължина. Досиетата съдържат и информация за кодиране (декодиране) на текста. Информацията представлява динамичен масив от съответствия “символ – код”, за всички участващи в текста символи. Да се реализират:
-
канонично представяне на клас Dossier
-
конструктор с параметри - текст(char*) и таблица за кодиране (Encoding*), който кодира текста (добавете допълнителни параметри, ако са необходими)
-
булев оператор &&, който проверява дали кодовете на две досиета си противоречат (т.е. дали дават различно кодиране за един и същи символ)
-
оператор за събиране (+), който събира два кодирани текста от досието, чиито кодове не си противоречат. Ако кодовете си противаоречат, се създава празно досие
-
printText, който извежда оригиналния текст на екрана
Задача 2. Да се дефинира клас Relation, който съдържа два обекта от тип int, наречени subject и object, и низ с произволна дължина relation, описващ връзката между тези обекти.
Пример: Relation r1(2,6,“is smaller than”),r2(6,3,“is divisible by”);
За класа да се реализират голямата четворка и оператор за изход operator<<
Пример: r1.print(): 2 is smaller than 6.
За класа Relation реализирайте и оператор за композиция * по следния начин.
Ако r = r1 * r2, то r.subject = r1.subject, r.object = r2.object,
r.action = r1.action r1.object “, which is“ r2.action
Пример: (r1*r2).print(): 2 is smaller than 6, which is divisible by 3
Композицията се допуска само ако r1.object == r2.subject, в противен случай резултатът e r1.
Упътване: Обръшението към ф-ята itoa(val,str,10) записва числото val в низа сочен от str.