Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2006 Програм-ие (ДО).doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
239.1 Кб
Скачать

8. Контролирующие материалы для аттестации студентов по дисциплине

Примеры экзаменационных билетов:

Билет № 3

1. Создайте класс samp. Включите в закрытую часть класса целочисленные переменные a и b, а в открытую часть класса – конструктор с параметрами, а также функции geta и getb, которые возвращают соответственно значения переменных a и b. Напишите функцию main, которая создает одномерный массив объектов класса samp размером 5 и одновременно инициализирует эти объекты значениями (1; 2), (3; 4), (5; 6), (7; 8) и (9; 10) соответственно, а затем печатает содержимое объектов из массива, начиная с конца массива и используя указатель на объект для доступа к данным-элементам объекта.

Ответ:

class samp {

int a, b;

public:

samp(int m, int n)

{

a = m;

b = n;

}

int geta()

{

return a;

}

int getb()

{

return b;

}

};

main()

{

samp ob[4] =

{

samp(1,2), ... , samp(9,10)

};

samp *p;

p = &ob[4];

for(int i=0; i<5; i++)

{

cout << p -> geta() << ’ ’

<< p -> getb() << endl;

p--;

}

return 0;

}

2. Как сделать базовый класс абстрактным ?

Ответ:

Надо включить в базовый класс чистую виртуальную функцию.

3. Создайте класс vector, представляющий векторы в трехмерном пространстве. Включите в закрытую часть класса целочисленные переменные x, y и z, представляющие координаты вектора. Включите в открытую часть класса конструктор с параметрами. Добавьте в программу перегруженный оператор > , который является функцией-другом класса vector и возвращает результат операции “больше” над модулями двух векторов, представляемых двумя объектами класса vector. Напишите функцию main, которая создает два объекта класса vector, представляющие векторы с координатами (1; 2; 3) и (4; 5; 6), а затем, применяя к этим объектам перегруженный оператор > , получает результат сравнения указанных векторов и печатает его.

Ответ:

class vector {

int x, y, z;

public:

vector(int i, int j, int k)

{

x = i;

y = j;

z = k;

}

friend int operator>(vector, vector)

};

int operator>(vector ob1, vector ob2)

{

return (ob1.x * ob1.x +

ob1.y * ob1.y + ob1.z * ob1.z) >

(ob2.x * ob2.x +

ob2.y * ob2.y + ob2.z * ob2.z);

}

int main()

{

vector o1(1,2,3), o2(4,5,6);

if(o1 > o2)

cout << ”o1 > o2”;

else

cout << ”o1 <= o2”;

return 0;

}

Билет № 16

1. Создайте класс box, представляющий коробки. Закрытые данные-элементы (ДЭ) класса должны представлять ширину, длину, высоту, объем и цвет коробки. Включите в открытую часть класса следующие функции-элементы:

  • конструктор с параметрами;

  • конструктор копий, который устанавливает в копии для цвета коробки значение “зеленый ”, а для остальных ДЭ класса – значения одноименных ДЭ из объекта-оригинала;

  • функция show, печатающая содержимое объекта класса.

Напишите функцию main, которая создает объект класса box, представляющий коробку красного цвета с размерами 2 х 3 х 8, затем посредством конструктора копий создает копию этого объекта, представляющую коробку зеленого цвета, и в заключение печатает содержимое объекта и копии.

Ответ:

class box {

int w, l, h, vol;

char *col;

public:

box(int, int, int, char *);

box(box &);

void show();

};

box :: box(int x, int y, int z, char *c)

{

w = x,

l = y,

h = z;

vol = w * l * h;

strcpy(col, c);

}

box :: box(box &ob)

{

w = ob.w,

l = ob.l,

h = ob.h;

vol = ob.vol;

strcpy(col, ”зеленый”);

}

void box :: show()

{

cout << w << ’ ’ << l << ’ ’

<< h << ’ ’ << vol << ’ ’

<< col << endl;

}

int main()

{

box x(2,3,8,”красный”);

box y = x;

x.show();

y.show();

return 0;

}

2. Как исправить в классе Time следующее объявление:

void ~Time(int ptr);

Ответ:

~Time();

3. Создайте иерархию классов:

Класс

Базовый класс

Абстрактный объект (АО), представляемый классом

Название АО

Свойства АО

Food

продукт питания

изготовитель, поставщик, оптовая цена, розничная цена

Meat

Food

мясное изделие

дата изготовления, срок годности

Sausage

Meat

колбасное изделие

тип, вид, % консервантов

Drink

Food

напиток

тип тары, емкость тары

Juice

Drink

сок

состав, % сахара, % консервантов

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

Ответ:

23

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]