Добавить спрайт к шарику и человечку
воскресенье, 28 августа 2011 г.
пятница, 5 августа 2011 г.
графы 1
сделать для человечка лабиринт и научить его ходить из одной точки в другую, например за конфеткой.
среда, 27 апреля 2011 г.
понедельник, 11 апреля 2011 г.
алгоритмы 2
нарисуйте снежинку коха, салфетку серпинского, ковер серпинского, шагающего xkcd человечка.
четверг, 24 марта 2011 г.
Двоичные деревья
Напишите шаблон двоичного дерева поиска и контейнер к нему, реализуйте вставку удаление и поиск элементов с сохранением упорядоченной структуры дерева.
Попробуйте инстанцировать шаблон классом std::pair для которого оператор сравнения сравнивает элементы используя std::pair::first.
Попробуйте инстанцировать шаблон классом std::pair
суббота, 19 марта 2011 г.
среда, 16 марта 2011 г.
Шаблоны 1
Сделайте контейнер связного списка и список шаблонами класса, где параметром шаблона служит хранимый тип.
перегрузите оператор сравнения для комплексных чисел, сравнивающий числа по модулю и проверьте что сортировка для списка комплексных чисел работает правильно.
шаблоны делаются примерно так:
template< class T>
struct List{
T value;
List* next;
}
перегрузите оператор сравнения для комплексных чисел, сравнивающий числа по модулю и проверьте что сортировка для списка комплексных чисел работает правильно.
шаблоны делаются примерно так:
template< class T>
struct List{
T value;
List* next;
}
воскресенье, 6 марта 2011 г.
пятница, 4 марта 2011 г.
контейнер списка.
Сделайте класс-контейнер для связного списка.
Контейнер должен хранить голову списка, уметь добавлять элементы в список, удялять элементы из списка, удалять список в деструкторе, при копировании контейнера должна создаваться копия списка.
Пояснения:
Это нужно для того чтобы список мог быть стековым объектом и самоудаляться при выходе из области видимости, а так же для устранения путаницы с указателями - уменьшить возможности для получения нескольких указателей на элементы одного и того же списка и проблемы с временем жизни указателей.
Чтобы копировать сам список а не указатель на голову списка перегрузите operator= и конструктор копирования.
Контейнер должен хранить голову списка, уметь добавлять элементы в список, удялять элементы из списка, удалять список в деструкторе, при копировании контейнера должна создаваться копия списка.
Пояснения:
Это нужно для того чтобы список мог быть стековым объектом и самоудаляться при выходе из области видимости, а так же для устранения путаницы с указателями - уменьшить возможности для получения нескольких указателей на элементы одного и того же списка и проблемы с временем жизни указателей.
Чтобы копировать сам список а не указатель на голову списка перегрузите operator= и конструктор копирования.
четверг, 3 марта 2011 г.
Перегрузка операторов
Напишите класс комплексных чисел с перегруженными операторами +, -, *, / и оператором << для вывода комплексного числа на экран.
см перегрузка функций страуструп 191, страуструп 309
см перегрузка функций страуструп 191, страуструп 309
вторник, 1 марта 2011 г.
Инициализация, конструкторы, деструкторы
Примените конструкторы и деструкторы для автоматизации создания и удаления связных списков в предыдущих заданиях.
немного о конструкторах и деструкторах:
В структурах классах можно объявлять функции которые запускаются при создании объекта и инициализируют их угодным программеру образом.
Конструктор должен иметь то же имя что и класс/структура, конструктор может иметь параметроы. Конструкор без параметров называется конструктором по-умолчанию, конструктор с параметром - ссылка на определяемый класс, называется конструктор копирования.
struct List {
List()//default constructor
{
value = 0;
next = 0;
}
List(const List &s)//copy constructor
{
value = s.value;
next = s.next;
}
List(int v, List* n)//constructor
{
value = v;
next = n;
}
int value;
List* next;
};
main()
{
List a;//вызывается конструктор по-умолчанию
List b(a); // вызывается конструктор копирования
List v = a;// вызывается конструктор копирования
List g(4,&a);// вызывается конструктор List::List(int v,List* n)
List *d = new List;//вызывается конструктор по-умолчанию
List *e = new List(d);//вызывается конструктор копирования
List *j = new List(4,d);// вызывается конструктор List::List(int v,List* n)
}
Деструктором должен иметь тоже имя что и класс, но с добавлением тильды перед именем и не может иметь параметров, деструктор вызывается при удалении объекта.
struct List {
~List()//destructor
{
delete next;
}
int value;
List* next;
};
немного о конструкторах и деструкторах:
В структурах классах можно объявлять функции которые запускаются при создании объекта и инициализируют их угодным программеру образом.
Конструктор должен иметь то же имя что и класс/структура, конструктор может иметь параметроы. Конструкор без параметров называется конструктором по-умолчанию, конструктор с параметром - ссылка на определяемый класс, называется конструктор копирования.
struct List {
List()//default constructor
{
value = 0;
next = 0;
}
List(const List &s)//copy constructor
{
value = s.value;
next = s.next;
}
List(int v, List* n)//constructor
{
value = v;
next = n;
}
int value;
List* next;
};
main()
{
List a;//вызывается конструктор по-умолчанию
List b(a); // вызывается конструктор копирования
List v = a;// вызывается конструктор копирования
List g(4,&a);// вызывается конструктор List::List(int v,List* n)
List *d = new List;//вызывается конструктор по-умолчанию
List *e = new List(d);//вызывается конструктор копирования
List *j = new List(4,d);// вызывается конструктор List::List(int v,List* n)
}
Деструктором должен иметь тоже имя что и класс, но с добавлением тильды перед именем и не может иметь параметров, деструктор вызывается при удалении объекта.
struct List {
~List()//destructor
{
delete next;
}
int value;
List* next;
};
понедельник, 28 февраля 2011 г.
Связные списки 2
Напишите функцию возвращающую элемент номер N из списка, добавляющую элемент в список, функцию удаляющую элемент из списка, функцию вставляющую один список в другой список.
совет: позицию в списке определяйте по указателю на элемент списка, для удаления-вставки элемента по индексу используйте функцию возвращающую элемент номер N.
совет: позицию в списке определяйте по указателю на элемент списка, для удаления-вставки элемента по индексу используйте функцию возвращающую элемент номер N.
воскресенье, 27 февраля 2011 г.
Связные списки 1
Создайте список из структур вида
struct List {
int value;
List* next;
}
где value - значение элемента списка, next - указатель на следующий элемент, если следующего элемента нет указатель приравнивается нулю.
struct List {
int value;
List* next;
}
где value - значение элемента списка, next - указатель на следующий элемент, если следующего элемента нет указатель приравнивается нулю.
суббота, 26 февраля 2011 г.
массивы, указатели, ссылки
Создайте функции меняющие местами значения двух переменных, одну с использованием указателей, другую с использованием ссылок.
Создайте функцию меняющую местами значения двух массивов одинакового размера поэлементно.
Попробуйте использовать эту функцию на статических массивах и на массивах созданных при помощи new[].
Создайте функцию меняющую местами значения двух массивов одинакового размера поэлементно.
Попробуйте использовать эту функцию на статических массивах и на массивах созданных при помощи new[].
четверг, 24 февраля 2011 г.
Фундаментальные типы 2
нарисуйте граф фундаментальных типов где от одного типа стрелка идет к другому типу, если все его значения могут быть записаны используя этот тип.
Фундаментальные типы.
Напишите программу печатающую размеры в байтах, минимальные и максимальные значения всех фундаментальных типов.
используйте sizeof для этого, определите как ведет себя sizeof на массивах.
используйте функции из заголовочного файла limits для определения минимального и максимального значения для выбранного типа, например:
std::numeric_limits::max();
используйте sizeof для этого, определите как ведет себя sizeof на массивах.
используйте функции из заголовочного файла limits для определения минимального и максимального значения для выбранного типа, например:
std::numeric_limits
Подписаться на:
Комментарии (Atom)