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

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

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