Кафедра Автономных Информационных и Управляющих Систем "утверждаю" Декан автф в. В. Губарев " " 2006 г рабочая программа

Вид материалаРабочая программа
Подобный материал:
1   2   3

5. Напишите программу, в которой класс sphere представляет шары. Конструктор с параметрами позволяет задать номер, цвет и радиус шара, а также вычисляет его объем. Все указанные свойства шара являются закрытыми элементами класса. Функция main() должна создать три разных шара и вывести на экран характеристики наименьшего шара.

6. Напишите программу, в которой класс figure содержит в виде открытых данных-элементов длину основания и высоту геометрической фигуры. Классы fig1и fig2, наследники класса figure, представляют прямоугольники и треугольники соответственно. Используйте прямое открытое наследование. Базовый класс содержит чистую виртуальную функцию area ( ), которая имеется также в обоих производных классах и возвращает площадь соответствующей фигуры. Для инициализации объектов используйте конструкторы с параметрами. В функции main () создайте объекты каждого

7. Напишите программу, в которой класс body содержит в виде закрытых данных-элементов характерный размер (ребро или радиус) геометрического тела. Классы b1 и b2, наследники класса body, представляют кубы и шары соответственно. Используйте прямое открытое наследование. Базовый класс содержит чистую виртуальную функцию volume ( ), которая имеется также в обоих производных классах и возвращает объем соответствующего тела. Для инициализации объектов используйте конструкторы с параметрами. В функции main () создайте объекты каждого класса и выведите на экран их объемы, используя полиморфизм (динамическое связывание).

8. Напишите программу, в которой класс body содержит в виде закрытых данных-элементов два признака геометрического тела – цвет и объем (например, "зеленый" и "5 куб. см"). Классы ellips и par, наследники класса body, представляют эллипсоиды и параллелепипеды соответственно. Используйте прямое открытое наследование. Базовый класс содержит виртуальную функцию show ( ), которая переопределяется в производных классах так, что выводит на экран название, цвет и объем соответствующего тела. Для инициализации объектов используйте конструкторы с параметрами. В функции main () создайте объекты каждого класса и выведите на экран их данные, НЕ применяя полиморфизм.

9. Напишите программу, в которой класс iq, представляющий очереди целых чисел, содержит конструктор и две рабочие функции – добавление в очередь и извлечение из очереди.

Функция main ( ) должна создать два объекта класса, правильно присвоить один из них другому и показать, что оба объекта имеют одинаковое содержимое.

10. Напишите программу, в которой имеются класс stack и функция show ( ). Класс stack представляет стек символов. Он содержит конструктор и две функции – push (поместить символ в стек) и pop (вытолкнуть символ из стека). Функция show ( ) получает в качестве аргумента объект класса stack и выводит содержимое этого объекта на экран. Функция main ( ) создает стек, заполняет его символами, вызывает функцию show ( ) и, в заключение, извлекает из стека все элементы из стека и показывает их на экране. Какой результат получится на экране?

11. Дан класс:

class vector {

int x, y; // компоненты двумерного вектора

public:

//...

};


Включите в этот класс перегруженные конструкторы, функции доступа и перегруженные операторы для вычисления суммы и скалярного произведения векторов. Напишите функцию main ( ), демонстрирующую работу этих операторов.

12. Дан класс:


class vector {

int x, y; // компоненты двумерного вектора

public:

//...

};


Включите в этот класс перегруженные конструкторы, функции доступа и перегруженные операторы для вычисления разности векторов и модуля вектора. Напишите функцию main ( ), демонстрирующую работу этих операторов.

13. Дан класс многомерных векторов:


class vector {

int dim; // размерность вектора

int p[100]; // массив компонентов вектора

public:

// ...

};

Включите в этот класс конструктор с параметром (размерность вектора), необходимые функции доступа и перегруженные операторы для вычисления суммы векторов и модуля вектора. Напишите функцию main ( ), демонстрирующую работу этих операторов.

14. Дан класс векторов многомерного линейного пространства:

class vector {

int dim; int * p; // размерность вектора и указатель на компоненты вектора соответственно.

public:

// ...

};


Включите в этот класс конструктор с параметром (длина вектора), деструктор, необходимые функции доступа и перегруженный оператор для вычисления скалярного произведения векторов. Конструктор должен обеспечивать динамическое выделение памяти. Напишите функцию main ( ), демонстрирующую работу этого оператора.

15. Дан класс:

class vector {

int x, y; // компоненты двумерного вектора

public:

//...

};


Включите в этот класс перегруженные конструкторы, функции доступа и перегруженные операторы > и < для сравнения векторов по модулю. Напишите функцию main ( ), демонстрирующую работу этих операторов.

16. Дано определение класса массивов с динамически выделяемой памятью:


class array {

int * p; // указатель на память, выделенную для массива

int size; // длина массива в байтах

public:

array(int s); // s – длина массива в байтах

int & put(int i); // функция возвращает ссылку на i-ый элемент массива

int get(int i); // функция возвращает значение i-го элемента массива

};

Разработайте указанные функции класса. При работе с массивом должен обеспечиваться котроль

его границ. Кроме того, включите в класс перегруженный оператор присваивания, который

гарантирует, что память, выделенная каждому массивам, не повреждается при присваивании

одного массива другому. Напишите демонстрационную программу.

17. Дано определение класса массивов с динамически выделяемой памятью:


class array {

int * p; // указатель на память, выделенную для массива

int len; // длина массива в байтах

public:

array(int s); // s – длина массива в байтах

array & operator=(array & ob); // оператор присваивания массива

int & operator[](int i); // оператор индексирования массива

};

Разработайте конструктор класса и перегруженные операторы = и [ ]. При работе с массивом должен обеспечиваться контроль его границ. Перегруженный оператор присваивания должен гарантировать, что память, выделенная каждому массивам, не повреждается при присваивании одного массива другому. Напишите демонстрационную программу.

18. Разработайте класс stroka, поддерживающий следующие операции:


  1. конкатенация строк при помощи перегруженного оператора +
  2. присваивание строк при помощи перегруженного оператора =
  3. сравнение строк при помощи перегруженных операторов <, > и = =


Разрешается использовать строки ограниченной длины. Напишите демонстрационную программу.

19. Разработайте иерархию классов для самолетов. Базовый класс plane определяет количество двигателей, емкость топливных баков и максимальную высоту полета. Производный класс plane_p представляет пассажирские самолеты и определяет крейсерскую скорость воздушного судна и максимальное число пассажиров на борту. Производный класс plane_t представляет транспортные самолеты и определяет максимальный вес полезного груза на борту. Каждый класс содержит конструктор с параметрами и виртуальную функцию show ( ), которая выводит на экран все характеристики самолета соответствующего типа. Вес полезного груза на борту хранится в динамически выделяемой памяти. Напишите демонстрационную программу.

20. Напишите программу, которая содержит базовый класс сelsius и два его производных класса farenheit и kelvin. Класс сelsius содержит защищенную переменную temp со значением температуры котла в градусах Цельсия, а также виртуальную функцию show ( ), которая выводит на экран температуру в градусах Цельсия. Функция show ( ) в классе farenheit выводит на экран эту температуру в градусах Фаренгейта ( t °F = 1,8 * t °C + 32 ), а в классе kelvin – в градусах Кельвина ( t °K = t °C - 273,15 ). Напишите демонстрационную программу, используя полиморфизм.