Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OOPiP_2013 / Контрольная работа_2013

.doc
Скачиваний:
25
Добавлен:
01.03.2016
Размер:
71.17 Кб
Скачать

6

«ОБЪЕКТНО-ОРИЕТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И ПРОЕКТИРОВАНИЕ»

Контрольная работа для студентов специальности АСОИ заочной формы обучения

Цель работы: контроль уровня знаний студентов заочной формы обучения по объектно-ориентированному программированию и проектированию; формирование навыков самостоятельной работы с языком программирования С++.

Некоторые задания делятся по вариантам. Номер варианта для конкретного задания вычисляется следующим образом: НОМЕР_ВАРИАНТА = (СУММА_ЦИФР_НОМЕРА_ЗАЧЕТНОЙ_КНИЖКИ mod КОЛИЧЕСТВО_ВАРИАНТОВ ) + 1, где mod — операция получения остатка от деления.

Например, для зачетной книжки № 099437 и семи вариантов номер варианта получается ((0 + 9 + 9 + 4 + 3 + 7) mod 7) + 1 = (32 mod 7) + 1 = 4 + 1 = 5.

ПУНКТ 1. Теоретический вопрос.

Включите в отчет ответ на вопрос согласно вашему варианту.

  1. Особенности языка С++.

  2. Простые типы данных. Что такое данные.

  3. Простые типы данных. Целочисленные типы.

  4. Простые типы данных. Константы.

  5. Простые типы данных. Типы с плавающей точкой.

  6. Простые типы данных. Локальные переменные.

  7. Простые типы данных. Глобальные переменные.

  8. Операторы в С++. Выражение.

  9. Операторы в С++. Составной оператор.

  10. Операторы в С++. Оператор if.

  11. Операторы в С++. Оператор while.

  12. Операторы в С++. Оператор do … while.

  13. Операторы в С++. Оператор continue.

  14. Операторы в С++. Оператор break.

  15. Операторы в С++. Оператор switch.

  16. Операторы в С++. Оператор return.

  17. Операции в С++. Арифметические операции.

  18. Операции в С++. Присваивание.

  19. Операции в С++. Операции отношения.

  20. Операции в С++. Логические операции.

  21. Одномерные массивы в С++.

  22. Многомерные массивы в С++.

  23. Символьные массивы в С++.

  24. Указатели в С++. Понятие указателя.

  25. Указатели в С++. Операции над указателями.

  26. Указатели в С++. Указатели и массивы.

  27. Указатели в С++. Операции new и delete.

  28. Указатели в С++. Указатели и динамические массивы.

  29. Структуры в С++. Операции доступа к полям.

  30. Функции в С++. Определение функции.

  31. Функции в С++. Вызов функции.

  32. Функции в С++. Область видимости.

  33. Функции в С++. Передача параметров.

  34. Функции в С++. Параметры по умолчанию.

  35. Функции в С++. Встраиваемые функции.

  36. Функции в С++. Перегрузка функций.

  37. Принцип инкапсуляции.

  38. Классы. Методы и поля.

  39. Классы. Управление доступом внутри класса. (с учетом protected)

  40. Классы. Конструкторы.

  41. Принцип композиции.

  42. Классы. Деструктор.

  43. Конструирование и уничтожение объектов.

  44. Особенности конструирования композитных классов.

  45. Перегрузка операторов. Общие сведения.

  46. Перегрузка операторов. Операторные методы и функции.

  47. Принцип наследования.

  48. Производные классы.

  49. Реализация производных классов.

  50. Иерархия классов.

  51. Управление доступом при наследовании.

  52. Принцип полиморфизма.

  53. Виртуальные методы (виртуальные функции).

  54. Абстрактные классы.

  55. Исключения. Синтаксис.

  56. Указатель this.

ПУНКТ 2. Практическое задание 1.

Порядок выполнения работы пункта 2.

1. Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).

2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования.

3. Определить в классе деструктор.

4. Определить в классе методы для просмотра и установки полей данных.

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

Содержание отчета по пункту 2.

1. Постановка задачи. Следует дать конкретную постановку, т.е. указать, какой класс должен быть реализован, какие должны быть в нем конструкторы, метод и т.д.

2. Определение пользовательского класса с комментариями.

3. Реализация конструкторов и деструктора.

4. Листинг основной программы, в котором должно быть указано, в каком месте и какой конструктор или деструктор вызываются.

Варианты заданий для пункта 2.

Описания элементов - данных пользовательских классов

1. СТУДЕНТ

имя – char*

курс – int

пол – int(bool)

4. ИЗДЕЛИЕ

имя – char*

шифр – char*

количество – int

7. АДРЕС

имя – char*

улица – char*

номер дома – int

10. ЦЕХ

имя – char*

начальник – char*

количество

работающих – int

13. СТРАНА

имя – char*

форма

правления – char*

площать – float

2. СЛУЖАЩИЙ

имя – char*

возраст – int

рабочий стаж – int

5. БИБЛИОТЕКА

имя – char*

автор – char*

стоимость – float

8. ТОВАР

имя – char*

количество – int

стоимость – float

11. ПЕРСОНА

имя – char*

возраст – int

пол – int(bool)

14. ЖИВОТНОЕ

имя – char*

класс – char*

средний вес – int

3. КАДРЫ

имя – char*

номер цеха – int

разряд – int

6. ЭКЗАМЕН

имя студента – char*

дата – int

оценка – int

9. КВИТАНЦИЯ

номер – int

дата – int

сумма – float

12. АВТОМОБИЛЬ

марка – char*

мощность – int

стоимось – float

15. КОРАБЛЬ

имя – char*

водоизмещение – int

тип – char*

ПУНКТ 3. Практическое задание

Порядок выполнения работы пункта 3.

1) При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины, например, 100 элементов:

int N=100;

int a[N];

Затем пользователь вводит реальную длину массива (не больше N) и работает с массивом той длины, которую он сам указал. Остальные элементы (хотя память под них и будет выделена) не рассматриваются.

2) При уменьшении или увеличении длины массива необходимо изменять его реальную длину.

Содержание отчета по пункту 3.

1. Постановка задачи.

2. Листинг основной программы.

Варианты заданий для пункта 3.

1.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить элемент с номером К.

  4. Добавить после каждого четного элемента массива элемент со значением 0.

  5. Распечатать полученный массив.

2.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить первый элемент равный 0.

  4. Добавить после каждого четного элемента массива элемент со значением M[ I-1 ]+2.

  5. Распечатать полученный массив.

3.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить все элементы равные 0.

  4. Добавить после первого четного элемента массива элемент со значением M[ I-1 ]+2.

  5. Распечатать полученный массив.

4.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить элементы, индексы которых кратны 3.

  4. Добавить после каждого отрицательного элемента массива элемент со значением | M[ I-1 ]+1|.

  5. Распечатать полученный массив.

5.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить элементы кратные 7.

  4. Добавить после каждого нечетного элемента массива элемент со значением 0.

  5. Распечатать полученный массив.

6.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить элемент с заданным номером.

  4. Добавить после первого четного элемента массива элемент со значением M[ I-1 ]+2.

  5. Распечатать полученный массив.

7.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить последний элемент равный 0.

  4. Добавить после элемента массива с заданным индексом элемент со значением 100.

  5. Распечатать полученный массив.

8.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить все элементы с заданным значением.

  4. Добавить перед каждым четным элементом массива элемент со значением 0.

  5. Распечатать полученный массив.

9.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить первый элемент с заданным значением.

  4. Сдвинуть массив циклически на К элементов вправо.

  5. Распечатать полученный массив.

10.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить 5 первых элементы массива.

  4. Добавить в конец массива 3 новых элемента.

  5. Распечатать полученный массив.

11.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить 5 последних элементов массива.

  4. Добавить в начало массива 3 элемента с значением M[ I+1 ]+2.

  5. Распечатать полученный массив.

12.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Поменять местами минимальный и максимальный элементы массива.

  4. Удалить из массива все элементы превышающие его среднее значение более, чем на 10%.

  5. Распечатать полученный массив.

13.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Удалить из массива все элементы совпадающие с его минимальным значением.

  4. Добавить в начало массива 3 элемента с значением равным среднему арифметическому массива.

  5. Распечатать полученный массив.

14.

  1. Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

  2. Распечатать полученный массив.

  3. Перевернуть массив и, если число элементов массива нечетное, удалить его средний элемент.

  4. Добавить в начало массива 3 элемента с значением M[ I+10 ]-2.

  5. Распечатать полученный массив.

15.

  1. Реализовать с использованием массива двунаправленное кольцо (просмотр возможен в обе стороны, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1 ( по кольцу влево).

  3. Удалить из кольца первый и последний элементы.

  4. Распечатать полученный массив, начиная с К-ого элемента (и до К+1 по кольцу вправо).

16.

Реализовать с использованием массива очередь (первый пришел, первый ушел), для чего организовать добавление, удаление элементов в массив и печать массива после каждой операции.

17.

  1. Реализовать с использованием массива двунаправленное кольцо (просмотр возможен в обе стороны, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1 ( по кольцу влево).

  3. Добавить в кольцо первый и последний элементы.

  4. Распечатать полученный массив, начиная с К-ого элемента (и до К+1 по кольцу вправо).

18.

  1. Реализовать с использованием массива однонаправленное кольцо (просмотр возможен слева направо, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1.

  3. Добавить в кольцо первый и последний элементы.

  4. Удалить из кольца четные элементы.

  5. Распечатать полученный массив, начиная с К-ого элемента и до К-1.

19.

  1. Реализовать с использованием массива однонаправленное кольцо (просмотр возможен справа налево, от первого элемента можно перейти к последнему).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К+1.

  3. Добавить в кольцо первый и последний элементы.

  4. Удалить из кольца нечетные элементы.

  5. Распечатать полученный массив, начиная с К-ого элемента и до К+1.

20.

  1. Реализовать с использованием массива двунаправленное кольцо (просмотр возможен в обе стороны, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1 ( по кольцу влево).

  3. Добавить в кольцо после элементов с индексами кратными 5 элементы равные 0.

  4. Распечатать полученный массив, начиная с К-ого элемента (и до К+1 по кольцу вправо).

21.

  1. Реализовать с использованием массива двунаправленное кольцо (просмотр возможен в обе стороны, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1 ( по кольцу влево).

  3. Добавить в кольцо первый и 3 последних элемента.

  4. Распечатать полученный массив, начиная с К-ого элемента (и до К+1 по кольцу вправо).

22.

Реализовать с использованием массива стек (первый пришел, последний ушел), для чего организовать добавление, удаление элементов в массив и печать массива после каждой операции.

23.

  1. Реализовать с использованием массива двунаправленное кольцо (просмотр возможен в обе стороны, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1 ( по кольцу влево).

  3. Удалить из кольца все элементы совпадающие с его максимальным значением.

  4. Распечатать полученный массив, начиная с К-ого элемента (и до К+1 по кольцу вправо).

24.

  1. Реализовать с использованием массива однонаправленное кольцо (просмотр возможен слева направо, от последнего элемента можно перейти к первому).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К-1.

  3. Упорядочить элементы по возрастанию

  4. Удалить из кольца четные элементы.

  5. Распечатать полученный массив, начиная с К-ого элемента и до К-1.

25.

  1. Реализовать с использованием массива однонаправленное кольцо (просмотр возможен справа налево, от первого элемента можно перейти к последнему).

  2. Распечатать полученный массив, начиная с К-ого элемента и до К+1.

  3. Упорядочить элементы по убыванию

  4. Удалить из кольца нечетные элементы.

  5. Распечатать полученный массив, начиная с К-ого элемента и до К+1.

Соседние файлы в папке OOPiP_2013