1. Даден е израз със отварящи и затварящи скоби ()
    1. Да се провери дали скобите са поставени правилно, т.е. дали на всяка отваряща скоба има отделна съответстваща затваряща скоба
    2. Нека изразът съдържа и други видове скоби <> [] {}. Да се промени задачата от предната подточка, така че към проверката за коректност да се добави дали всяка двойките отварящи и затварящи скоби си съответстват по тип
    3. Ако е даден коректен израз, да се изведат всички двойки позиции на съответни двойки скоби. Пример: (a+(b-c)*((d+e)/f)). Да се изведе: 0-18, 3-7,9-17,10-14
  2. Да се реализира undo/redo функционалност на произволни команди чрез два стека. Да се приложи undo/redo за задачата за хотела от предното упражнение, като операциите "записване на гост" и "отписване на гост" да бъдат направени обратими.
    1. Да се опише абстрактен клас Command, който поддържа две абстрактни операции exec() и undo()
    2. Да се реализира клас UndoRedo, който поддържа следните операции:
      1. void exec(Command*) изпълнява нова команда
      2. void undo() отменя последната изпълнена команда
      3. void redo() изпълнява отново последната отменена команда
      4. void clearHistory() изтрива undo/redo информацията
    3. Да се реализира клас SimpleCommand, наследник на Command, който съдържа име на командата (name) и при изпълнение отпечатва "Executing <name>", а при отмяна отпечатва "Undoing <name>"
    4. Да се реализира клас CheckInCommand, който описва обратима команда за записване на нов гост в хотела от предното упражнение
    5. Да се реализира клас CheckOutCommand, който описва обратима команда за отписване на гост от хотела. Внимание: за да е обратима операцията, трябва командата да запомни кой е напусналия гост, за да може да го върне.
Последно модифициране: вторник, 15 ноември 2011, 10:17