
18.10.2009, 18:49
|
|
Познающий
Регистрация: 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");
|
|
|