Показать сообщение отдельно

  #1  
Старый 18.10.2009, 18:49
sebay
Познающий
Регистрация: 09.03.2009
Сообщений: 43
С нами: 9039367

Репутация: 53
По умолчанию

Прошу помогите с двумя лабами!

2. Список.

НОВЫЕ ПОНЯТИЯ: шаблон, понятие итератора.

Реализовать динамический список элементов типа T (T -- параметр).

Реализовать:

[на "тройку"] минимальный набор:

операции вставки элемента в начало и конец списка; удаления первого и последнего элемента; деструктор, освобождающий всю выделенную память; запретить использование конструктора копирования и оператора присваивания.

[на "четвёрку"] возможность перебора элементов:

класс-итератор, перебирающий элементы списка при вызове оператора ++

[на "пятёрку"] копирование списков:

корректно работающие конструктор копирования и оператор присваивания.


-----------------------------------------------------------------------------

3. Символьное дифференцирование.

НОВЫЕ ПОНЯТИЯ: наследование, виртуальные методы.

[на "тройку"]

Реализовать абстрактный класс Expression с чисто виртуальными методами Expression *diff(); void print(); реализовать классы Number, Variable, Add (сумма), Sub (разность) с реализациями операции diff (дифференцирование) и print (печать на экран).

Пример:

Expression *e = new Add(new Number(1), new Variable('x'));
e->print();
std::cout << "\n";
Expression *de = e->diff();
de->print();
std::cout << "\n";
delete e;
delete ed;

[на "четвёрку"]

Реализовать классы Mul (произведение), Div (частное), при желании функции типа Sin, Cos и т.п.

[на "пятёрку"]

Реализовать чтение выражения из строки с автоматическим созданием необходимых объектов.
Пример:

Expression *e = read_expression("(x+1)*x");
 
Ответить с цитированием