105 вопросов7 тестов в одном предметеДоступ 7 дней
Содержание предмета
Бесплатные ответы на тесты по предмету «Введение в объектно-ориентированное программирование.ои(dor)» — Синергия и МТИ
Быстрый поиск
Найдите вопрос в материалах предмета
Ищем по тексту вопросов и вариантов ответа на этой странице.
Показано 105 вопросов
По вашему запросу ничего не найденоПопробуйте сократить фразу или проверить написание.
Вопрос 1Ответ открыт бесплатно
Метод, принадлежащий классу и соотнесенный с классом (статический метод), может быть вызван сам по себе и имеет доступ к …
1любой функции программы
2только открытым членам класса
3статическим переменным класса✓ Правильный ответ
✓ Правильный ответ
статическим переменным класса
Вопрос 2
Модификаторы доступа в объектно-ориентированных языках являются …
1ключевые слова, которые задают параметры доступа для классов
2вариантами использования классов
3объектами класса, членами которого они являются
Вопрос 3
Классы в программе могут соответствовать:
1существительным в описаниях вариантов использования
2вариантам использования
3ассоциациям в диаграммах UML
4именам знаменитых программистов
Вопрос 4
Класс – это …
1конструктор, принимающий на входе значение неконстантной ссылки на объект класса, используется для передачи владения ресурсами этого объекта
2шаблон для создания объектов, обеспечивающий начальные значения состояний: инициализация полей-переменных и реализация поведения функций или методов
3специальная функция класса, которая вызывается при создании нового объекта этого класса и предоставляет возможность инициализировать объекты во время их создания и гарантировать, что все данные члены будут иметь корректные значения
Вопрос 5
Объект - это …
1шаблон для создания объектов, обеспечивающий начальные значения состояний: инициализация полей-переменных и реализация поведения функций или методов
2специальная функция класса, которая вызывается при создании нового объекта этого класса и предоставляет возможность инициализировать объекты во время их создания и гарантировать, что все данные члены будут иметь корректные значения
3структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии
Вопрос 6Ответ открыт бесплатно
Идея объектно-ориентированного программирования была основана на …
1представлении программы, как совокупности объектов✓ Правильный ответ
2представлении программы, как совокупности классов
3представлении программы, как совокупности методов
✓ Правильный ответ
представлении программы, как совокупности объектов
Вопрос 7
Определите соответствие между терминами и определениями:
1инкапсуляция
2полиморфизм
3абстрагирование
4наследование
5принцип быстрой и надёжной организации своей иерархической управляемости
6метод направлен на определение точки, где единое управление лучше разделить или наоборот, собрать воедино разделённые управления
7принцип, в котором учитывается все самое важное в предмете, для моделирования и решения конкретной задачи
8принцип создание класса на базе уже существующего, при этом, у нас есть возможность пользоваться функционалом (свойствами и методамбазового
Вопрос 8
Определите соответствие между открытиями и их создателями:
1первая программа для аналитической машины
2sketchpad
3simula
4Ада Августа Лавлейс
5Иван Сазерленд
6Оле-Йохан Даль и Кристен Нюгорд
Вопрос 9
Определите соответствия между языками и видами программирования.
1Python
21C
3Лисп
4объектно-ориентированное программирование
5процедурное программирование
6функциональное программирование
Вопрос 10Ответ открыт бесплатно
Определите в исторической последовательности открытия в программировании:
1ткацкий станок с перфокартами✓ Правильный ответ
2аналитическая машина✓ Правильный ответ
3первая программа для аналитической машины✓ Правильный ответ
4объектно-ориентированное программирование✓ Правильный ответ
✓ Правильный ответ
ткацкий станок с перфокартами ; аналитическая машина ; первая программа для аналитической машины ; объектно-ориентированное программирование
Вопрос 11
Определите создание языков программирования в исторической последовательности (от старого до нового):
1C++
2Simula
3Java
4Python
Вопрос 12
Определите последовательность, в которой развивалось направление объектно-ориентированного программирования:
На практике, объектно-ориентированное программирование сводится к созданию некоторого количества классов, включая интерфейс и реализацию, и последующему их использованию. Графическое представление некоторого количества классов и связей между ними называется диаграммой классов. Объектно-ориентированный подход, за время своего развития, накопил множество рекомендаций (паттернопо созданию классов и иерархий классов. Предсказать результат следующей программы. На экран выведется строка «Compiler Error», т.к. компилятор увидит ошибку в строке 1.
1на экран выведется «C»✓ Правильный ответ
2на экран выведется «B»
3на экран выведется строка «Garbage Value», т.к. компилятор не сможет запустить конструктор
✓ Правильный ответ
на экран выведется «C»
Вопрос 14
Как и структуры, классы могут задавать поля, то есть, переменные, принадлежащие либо непосредственно самому классу (статические), либо экземплярам класса (обычные). Статические поля существуют в одном экземпляре на всю программу (или, в более сложном варианте, — в одном экземпляре на процесс или на поток/нить). Обычные поля создаются по одной копии для каждого конкретного объекта — экземпляра класса. Представлен код программы. Какой результат выполнения?
1на экран выведется «Garbage Values»
2на экран ничего не выведется
3на экран выведется «Compiler Error in line cout
4на экран выведется «Compiler Error in line cout
Вопрос 15
В объектно-ориентированной программе с применением классов, каждый объект является «экземпляром» некоторого конкретного класса, и других объектов не предусмотрено. То есть, «экземпляр класса» в данном случае означает не «пример некоторого класса» или «отдельно-взятый класс», а «объект, типом которого является какой-то класс». При этом, в разных языках программирования допускается, либо не допускается существование еще каких-то типов данных, экземпляры которых не являются объектами. Перед Вами код. Опишите его работу.
1в этом классе скрыты два поля – health и ammo, получить значения которых извне, можно с помощью методов get_health() и get_ammo()
2в этом классе скрыты четыре поля – int x, int y, int scale, int position, получить значения которых извне, можно с помощью методов void draw
3в этом классе скрыто одно поле – health, получить значения которых извне можно с помощью метода int get_ammo()
Вопрос 16Ответ открыт бесплатно
Для объявления функции как виртуальной используется ключевое слово…
1… virtual✓ Правильный ответ
2… private
3… public
✓ Правильный ответ
… virtual
Вопрос 17
Обычно компиляторы при обработке виртуальных функций добавляют к каждому объекту скрытый элемент, который содержит указатель на массив адресов функций, называемый …
1…возвращаемое значение
2… защищенным членом класса
3…таблицей виртуальных функций
Вопрос 18
Полиморфизм в объектно-ориентированном программировании реализуется:
1через механизмы перегрузки (функций и операций), виртуальные функции и шаблоны
2через механизмы перегрузки (функций и операции шаблоны
3через виртуальные функции и шаблоны
Вопрос 19
Шаблон функции - это...
1прототип функции, в котором вместо имен параметров указан условный тип
2определение функции, в которой типу обрабатываемых данных присвоено условное обозначение
3определение функции, в котором указаны возможные варианты типов обрабатываемых параметров
Вопрос 20Ответ открыт бесплатно
Для указания на объект производного класса можно воспользоваться …
1указателем базового класса✓ Правильный ответ
2виртуальной функций
3защищенным членом класса
✓ Правильный ответ
указателем базового класса
Вопрос 21
Множественное наследование – это …
1наследование, при котором создание производного класса основывается на использовании нескольких непосредственных базовых классов
2наследование, при котором создание производного класса основывается на использовании одного базового класса
3наследование, при котором удаление производного класса основывается на использовании нескольких непосредственных базовых классов
Вопрос 22
Установите соответствие между терминами и определениями:
1public
2protected
3private
4открытое наследование
5защищенное наследование
6закрытое наследование
Вопрос 23Ответ открыт бесплатно
Установите соответствие между терминами и определениями:
1чисто-виртуальная функция✓ Правильный ответ
2дружественная функция✓ Правильный ответ
3статическая функция✓ Правильный ответ
4делает свой класс абстрактным✓ Правильный ответ
5имеет доступ к скрытым данным класса, по отношению к которому она объявлена таковой✓ Правильный ответ
6работающая с классом в целом, а не над отдельными его объектами✓ Правильный ответ
✓ Правильный ответ
чисто-виртуальная функция = делает свой класс абстрактным ; дружественная функция = имеет доступ к скрытым данным класса, по отношению к которому она объявлена таковой ; статическая функция = работающая с классом в целом, а не над отдельными его объектами
Вопрос 24
Установите соответствие между термином и его определением.
1статический полиморфизм
2динамический полиморфизм
3осуществляется за счет перегрузки и шаблонов функций
4реализуется виртуальными функциями
Вопрос 25
Установите порядок выполнения конструкторов при порождении из нескольких классов:
1конструкторы базовых классов в порядке их задания
2конструкторы членов, являющихся объектами класса
3конструктор порожденного класса
Вопрос 26
Если есть два класса, один из которых базовый, а другой — унаследованный от базового, то последовательность вызовов следующая:
1вызов конструктора базового класса
2вызов конструктора унаследованного класса
3компиляция
Вопрос 27Ответ открыт бесплатно
Ниже представлен код, проставьте последовательность действий, которая произведена в этом коде:
1создаем объект c класса C✓ Правильный ответ
2указываем rparent ссылаться на часть A объекта c✓ Правильный ответ
3вызываем метод rParent.getName()✓ Правильный ответ
4вызываем rParent.GetName(), что приводит к вызову A::getName(). Однако, поскольку A::getName() является виртуальной функцией, то компилятор ищет «наиболее» дочерний метод между A и C. В этом случае — это C::getName()✓ Правильный ответ
✓ Правильный ответ
создаем объект c класса C ; указываем rparent ссылаться на часть A объекта c ; вызываем метод rParent.getName() ; вызываем rParent.GetName(), что приводит к вызову A::getName(). Однако, поскольку A::getName() является виртуальной функцией, то компилятор ищет «наиболее» дочерний метод между A и C. В этом случае — это C::getName()
Вопрос 28
Перед Вами код с перегрузкой методов. Выберите правильное описание работы кода.
1здесь описывается одна версия функции show().Функция не возвращает результат. В зависимости от того, передан ли функции аргумент при вызове, отображается сообщение о том, что у функции нет аргумента, или сообщение с указанием значения аргумента
2в данном примере описывается одна версия функции show(). У функции текстовый аргумент. В зависимости от того, передан ли функции аргумент при вызове, отображается сообщение о том, что у функции нет аргумента, или сообщение с указанием значения аргумента
3здесь описывается две версии функции show(). В одном случае функция описана без аргументов. Во втором случае у функции текстовый аргумент. Функция в обоих случаях не возвращает результат. В зависимости от того, передан ли функции аргумент при вызове, отображается сообщение о том, что у функции нет аргумента, или сообщение с указанием значения аргумента
Вопрос 29
Перед Вами код. Выберите, какой результат кода:
1Base NonVirtual called. Base Virtual called. Base NonVirtual called. Derived Virtual called
2Base NonVirtual called. Base Virtual called. Base NonVirtual called
3Base NonVirtual called. Derived Virtual called
Вопрос 30Ответ открыт бесплатно
Перед Вами код. Выберите, какой будет результат кода:
1rParent is a Child. Поскольку rParent является ссылкой на родительскую часть объекта child, то, обычно, при обработке rParent.getName() вызывался бы Parent::getName(). Тем не менее, поскольку Parent::getName() является виртуальной функцией, то компилятор понимает, что нужно посмотреть, есть ли переопределения этого метода в дочерних классах. И компилятор находит Child::getName()✓ Правильный ответ
2rParent.getName. При обработке rParent.getName(), компилятор видит, что метод является виртуальной функцией. Когда Child ссылается на часть объекта getName, то компилятор просматривает все классы между Child и getName, чтобы найти наиболее дочерний метод speak(). И находит Child::speak(). В случае, когда getName ссылается на часть Child объекта main, компилятор находит rParent.getName()
3ничего не выведет. В этом случае Child::getValue() не считается подходящим переопределением для Parent::getValue(), так как типы возвратов разные (метод Child::getValue() считается полностью отдельной функцией)
✓ Правильный ответ
rParent is a Child. Поскольку rParent является ссылкой на родительскую часть объекта child, то, обычно, при обработке rParent.getName() вызывался бы Parent::getName(). Тем не менее, поскольку Parent::getName() является виртуальной функцией, то компилятор понимает, что нужно посмотреть, есть ли переопределения этого метода в дочерних классах. И компилятор находит Child::getName()
Вопрос 31
В обычном режиме компилятор автоматически формирует конструктор копирования для каждого класса, однако, в некоторых случаях, программист формирует конструктор копирования, называемый …
1… неявным конструктором копирования
2… явным конструктором копирования
3… конструктором по умолчанию
Вопрос 32
Конструктор копирования вызывается…
1при наследовании базового класса
2при описании нового объекта с инициализацией другим объектом этого же типа
3при присваивании объекта новому типу
Вопрос 33Ответ открыт бесплатно
При передаче параметра по значению, конструктор будет вызываться рекурсивно, поэтому он должен иметь…
1ссылку✓ Правильный ответ
2функцию-член
3переменную
✓ Правильный ответ
ссылку
Вопрос 34
«Закон Большой Тройки» или «Правило трёх» — правило в C++ гласит, что если класс или структура определяет один из следующих методов, то они должны явным образом определить все три метода. Какие три метода нужны?
1деструктор, оператор, функция
2конструктор, деструктор, оператор присваивания
3конструктор, класс, объект
Вопрос 35
Оператор присваивания – это…
1вид оператора, используемый для присваивания объектов одного класса друг другу
2вид оператора, используемый для хранения всех значений класса
3вид оператора, используемый для присваивания конструктора к деструктору
Вопрос 36
Существует два вида операций присваивания – это…
1простое присваивание и составное присваивание
2простое присваивание и множественное присваивание
3логическое присваивание и составное присваивание
Вопрос 37Ответ открыт бесплатно
Операторы присваивания хранят значение в объекте, указанном левым операндом. Установите соответствие между операторами и их значениями:
1=
2*=
3/=
4сохранение значения второго операнда в объект, указанный первым операндом
5умножение значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
6деление значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
✓ Правильный ответ
= = сохранение значения второго операнда в объект, указанный первым операндом ; *= = умножение значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом ; /= = деление значения первого операнда на значение второго операнда, сохранение результата в объект, указанный первым операндом
Вопрос 38
Операторы присваивания хранят значение в объекте, указанном левым операндом. Установите соответствие между операторами и их значениями
1+=
2-=
3сложение значения первого операнда со значением второго операнда, сохранение результата в объект, указанный первым операндом
4вычитание значения второго операнда из значения первого операнда, сохранение результата в объект, указанный первым операндом
5сдвиг значения первого операнда влево на количество битов, заданное значением второго операнда, сохранение результата в объект, указанный первым операндом
Вопрос 39
Операторы присваивания хранят значение в объекте, указанном левым операндом. Установите соответствие между операторами и их значениями.
1^=
2&=
3>>=
4выполнение операции побитового исключающего «ИЛИ» для значений первого и второго операндов, сохранение результата в объект, указанный первым операндом
5выполнение операции побитового «И» для значений первого и второго операндов, сохранение результата в объект, указанный первым операндом
6сдвиг значения первого операнда вправо на количество битов, заданное значением второго операнда, сохранение результата в объект, указанный первым операндом
Вопрос 40Ответ открыт бесплатно
Проставьте последовательность алгоритма процесса присваивания.
1вычислить левостороннее значение первого операнда. На этом этапе становится известным местонахождение целевого объекта, приёмника нового значения✓ Правильный ответ
2вычислить правостороннее значение второго операнда. Этот этап может быть сколь угодно большим и включать другие операторы (в том числе присвоения)✓ Правильный ответ
3присвоить вычисленное правостороннее значение левостороннему значению. Во-первых, при конфликте типов должно быть осуществлено их приведение (либо выдано сообщение об ошибке ввиду его невозможности). Во-вторых, собственно присваивания значения в современных языках программирования может быть подменено и включать не только перенос значений ячеек памяти✓ Правильный ответ
4возвратить вычисленное правостороннее значение как результат выполнения операции✓ Правильный ответ
✓ Правильный ответ
вычислить левостороннее значение первого операнда. На этом этапе становится известным местонахождение целевого объекта, приёмника нового значения ; вычислить правостороннее значение второго операнда. Этот этап может быть сколь угодно большим и включать другие операторы (в том числе присвоения) ; присвоить вычисленное правостороннее значение левостороннему значению. Во-первых, при конфликте типов должно быть осуществлено их приведение (либо выдано сообщение об ошибке ввиду его невозможности). Во-вторых, собственно присваивания значения в современных языках программирования может быть подменено и включать не только перенос значений ячеек памяти ; возвратить вычисленное правостороннее значение как результат выполнения операции
Вопрос 41
Оператор простого присваивания ( = ) вызывает сохранение значения второго операнда в объекте, указанном первым операндом. Если оба объекта имеют арифметические типы, правый операнд преобразуется в тип слева перед сохранением значения. Посмотрите код и напишите алгоритм его создания.
1перегрузка оператора присваивания
2проверка на самоприсваивание
3выполнение копирования значений
4возвращаем текущий объект
Вопрос 42
Оператор присваивания не может быть объявлен как «дружественный» к классу. Если перегрузить оператор присваивания как «дружественный» к классу, то это означает, что будет перегруженный глобальный оператор присваивания, который вызывается для экземпляров классов автоматически. Это, в свою очередь, может привести к путанице в операциях присваивания и увеличении невидимых ошибок. Поэтому, компиляторы языка C++ не допускают перегружать оператор присваивания как «дружественный» к классу. Посмотрите код и напишите алгоритм его создания.
1определение переменных
2вывод на экран
3увеличение значения
4вывод на экран значений с1, с2
Вопрос 43
Описать работу кода программы:
1задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В данном классе описано два конструктора для возможности создания пустой и некоторой начальной строк. Кроме того, задано два метода: GetString() и SetString(), через которые осуществляется доступ к массиву buff[], являющимся частным элементом класса. Представленный класс описывает минимальный набор функций для работы со строками. С помощью него можно задать какую-либо строку и получить ее, например, для вывода на экран
2задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В данном классе есть один конструктор для возможности создания пустой строки. Кроме того, задано два метода: GetString() и SetString(), через которые осуществляется доступ к массиву buff[], являющимся частным элементом класса. Представленный класс описывает минимальный набор функций для работы со строками. С помощью него можно задать какую-либо строку и получить ее, например, для вывода на экран
3задан класс string, в котором будут описаны алгоритмы обработки строковой информации. В классе описаны конструкторы для возможности создания пустой и некоторой начальной строк. Кроме того, задан один метод: GetString(), через который осуществляется доступ к массиву buff[], являющимся частным элементом класса
Вопрос 44Ответ открыт бесплатно
Функция operator++() может создавать новый объект класса для использования его в качестве возвращаемого значения. Опишите работу кода:
1функция operator++() создает новый объект класса Counter, для использования его в качестве возвращаемого значения. Далее, функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1
2функция operator++() создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1✓ Правильный ответ
3функция operator++() создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c2 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c1 = ++c2
✓ Правильный ответ
функция operator++() создает новый объект класса Counter, названный temp, для использования его в качестве возвращаемого значения. Она сначала увеличивает переменную count в своем объекте, а затем создает объект temp и присваивает ему значение count, то же значение, что и в собственном объекте. В конце функция возвращает объект temp. Получаем ожидаемый эффект. Выражение типа ++c1 теперь возвращает значение, которое можно использовать в других выражениях, таких, как: c2 = ++c1
Вопрос 45
Операция присваивания копированием отличается от конструктора копирования тем, что должна очищать члены-данные цели присваивания (и правильно обрабатывать самоприсваивание), тогда как конструктор копирования присваивает значения неинициализированным членам-данным. Опишите работу кода:
1вначале применим оператор выбора члена для выбора члена структуры, затем выделим новый массив данных, далее удалим массив, а затем создадим новый
2вначале защитим от неправильного самоприсваивания, затем выделим «новую» память и скопируем элементы, далее освободим «старую» память, и в конце присвоим значения в «новой» памяти объекту
3вначале объявим переменную типа класса, определим функцию-член, затем свяжем методы с объектами класса и возвратим значения в «новой» памяти объекту
Вопрос 46
Контейнерные классы – это…
1… классы, предназначенные для хранения данных, организованных определенным образом
2… классы, предназначенные для обработки и объявления данных
3… классы, предназначенные для сбора данных и их организации
Вопрос 47Ответ открыт бесплатно
Библиотека стандартных шаблонов – это …
1набор согласованных, обобщённых алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций в C++✓ Правильный ответ
2… набор данных, которая уже является моделью динамического массива
3… библиотека функций, обеспечивающая хранение конечного количества однотипных величин в виде непрерывной последовательности
✓ Правильный ответ
набор согласованных, обобщённых алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций в C++
Вопрос 48
Итераторы – это …
1контейнеры, которые обеспечивают доступ к конструкторам
2сущности, использующиеся для получения доступа к отдельным данным в контейнере
3переменные, которые обеспечивают быстрый доступ к данным по ключу
Вопрос 49
Контейнеры делятся на два вида - это …
1простые и множественные
2ассоциативные и последовательные
3придуманные и логические
Вопрос 50Ответ открыт бесплатно
Какой вид контейнеров обеспечивают хранение конечного количества однотипных величин в виде непрерывной последовательности?
1последовательные контейнеры✓ Правильный ответ
2ассоциативные контейнеры
3множественные контейнеры
✓ Правильный ответ
последовательные контейнеры
Вопрос 51
Стандартизованный интерфейс могут предоставлять:
1все виртуальные методы
2все контейнерные классы
3все функций
Вопрос 52
Контейнерные классы – это классы, предназначенные для хранения данных, организованных определенным образом. Контейнеры бывают двух видов – ассоциативные и последовательные. Установите соответствие между терминами и определениями контейнерных классов.
1вектор
2очередь
3стек
4структура данных, которая уже является моделью динамического массива
5структура данных, которая построена по принципу LILO (last in — last out: последний пришел — последний вышел)
6структура данных, которая работает по принципу FILO (first in — last out; первый пришел — последний вышел)
Вопрос 53
Каждый контейнерный класс имеет 4 основных метода для работы с оператором - метод begin(),метод end(),метод cbegin(),метод cend(). Установите соответствие между названием метода контейнерного класса и его описанием.
6указывают на первый элемент в обратной последовательности
Вопрос 54Ответ открыт бесплатно
Контейнерные классы – это классы, предназначенные для хранения данных, организованных определенным образом. Контейнеры бывают двух видов – ассоциативные и последовательные. Установите соответствие между терминами и определениями контейнерных классов.
1списки✓ Правильный ответ
2массивы✓ Правильный ответ
3словари✓ Правильный ответ
4структуры данных, которые построены на двусвязных списках✓ Правильный ответ
5наборы однотипных данных✓ Правильный ответ
6структуры данных, которые допускают дублирование ключей✓ Правильный ответ
✓ Правильный ответ
списки = структуры данных, которые построены на двусвязных списках ; массивы = наборы однотипных данных ; словари = структуры данных, которые допускают дублирование ключей
Вопрос 55
Проставьте порядок выполнения кода поэтапно.
1создать вектор
2внести данные в конец вектора
3заменить новыми значениями
4вывести содержимое
Вопрос 56
Проставьте последовательность функций классов-контейнеров в языке C++.
1создание пустого контейнера (через конструктор)
2удаление объекта из контейнера
3добавление нового объекта в контейнер
4просмотр количества объектов, находящихся на данный момент в контейнере
5очистка контейнера от всех объектов
6доступ к сохраненным объектам
7сортировка объектов/элементов (не всегда)
Вопрос 57Ответ открыт бесплатно
Пример работы с контейнером приведен ниже. В файле находится произвольное количество целых чисел. Программа считывает их в вектор и выводит на экран. Опишите последовательность кода:
2для создания вектора v применяется конструктор по умолчанию
3организуется цикл до конца файла, в котором из него считывается очередное целое число
4с помощью метода push_back число заносится в вектор, размер которого увеличивается автоматически
✓ Правильный ответ
записывается соответствующая специализация шаблона vector — vector˂int˃ ; для создания вектора v применяется конструктор по умолчанию ; организуется цикл до конца файла, в котором из него считывается очередное целое число ; с помощью метода push_back число заносится в вектор, размер которого увеличивается автоматически
Вопрос 58
Векторы — это умные массивы. Они занимаются автоматическим размещением себя в памяти, расширением и сужением своего размера по мере вставки или удаления данных. Векторы можно использовать в какой-то мере как массивы, обращаясь к элементам с помощью привычного оператора []. Случайный доступ выполняется очень быстро в векторах. Также, довольно быстро осуществляется добавление (или проталкиваниновых данных в конец вектора. Когда это происходит, размер вектора автоматически увеличивается для того, чтобы было, куда положить новое значение. Рассмотрим код программы.
1заполнение данными методом insert(). Метод insert() имеет два параметра: будущее расположение нового элемента в контейнере и значение элемента. Прибавляем две позиции к результату выполнения метода begin(), чтобы перейти к элементу № 2 (третий элемент в контейнере, считая с нуля). Элементы от точки вставки до конца контейнера сдвигаются, чтобы было место для размещения вставляемого. Размер контейнера автоматически увеличивается на единицу
2для создания вектора v используется штатный конструктор вектора без параметров. Как с любыми контейнерами STL, для задания типа переменных, которые будут храниться в векторе, используется шаблонный формат (в данном случае это тип int). Мы не определяем размер контейнера, поэтому вначале он равен 0. Метод push_back() вставляет значение своего аргумента в конец вектора (конец располагается там, где находится самый большой индекс). Начало вектора (элемент с индексом 0), в отличие от списков и очередей, не может использоваться для вставки новых элементов
3если переменной main присвоить значение true, то push_back() никогда не будет удален, память никогда не будет освобождена и произойдет утечка памяти. Однако, если бы push_back() был вектором, то подобное никогда бы и не произошло, так как память освобождалась бы автоматически при выходе push_back() из области видимости (независимо от того, выйдет ли функция раньше из области видимости или нет). Именно из-за этого использование std::vector является более безопасным, чем динамическое выделение памяти через оператор v
Вопрос 59
Стек – это динамическая структура сохранения данных, которая работает по принципу «последний пришел — первый вышел» (Last-In First-Out). В стеке добавление новых элементов и удаление существующих элементов производится с одного конца, который называется вершиной стека. Организация данных с помощью стека эффективна, когда нужно реализовать: - обмен данными между методами приложения с помощью параметров; - синтаксический анализ разнообразных выражений. Рассмотрим пример. Выберете, что будет результатом программы:
1программа попросит ввести шесть любых целых чисел. Например: 9 5 2 1 5 6. Затем выведет строку, где будет указан верхний элемент стека – 6. Далее, будет предложение удаления верхнего элемента. Затем, опять будет указан новый верхний элемент стека – 5. Далее, выведется строка – «Process returned 0 (0x0) execution time: 0.010 s. Press any key to continue
2программа попросит ввести шесть любых целых чисел. Например: 9 5 2 1 5 6. Затем выведет строку, где будет указан верхний элемент стека – 9. Далее, будет предложение удаления верхнего элемента. Затем, опять будет указан новый верхний элемент стека – 5
3программа попросит ввести пять любых целых чисел. Например: 5 2 1 5 6. Затем выведет строку, где будет указан верхний элемент стека – 6. Далее, будет предложение добавления верхнего элемента. Затем, опять будет указан новый верхний элемент стека. Далее, выведется строка – «Process returned 0 (0x0) execution time : 0.010 s. Press any key to continue
Вопрос 60Ответ открыт бесплатно
Для работы с очередью вам понадобится знать функции: push(), pop(), front(), back(), empty(). 1) Для добавления в очередь нового элемента нужно воспользоваться функцией — push(). В круглых скобках должно находится значение, которое мы хотим добавить. 2) Если нам понадобилось удалить первый элемент, нужно оперировать функцией pop(). В круглых скобках уже ничего не нужно указывать, но по правилам они в обязательном порядке должны присутствовать! Эти функции тоже не нуждаются в указании аргумента: empty(), back() и front(). 3) Если вам понадобилось обратиться к первому элементу очереди, то вам понадобится функция front(). 4) Чтобы обратиться к последнему элементу в очереди, вам поможет функция back(). 5) Чтобы узнать, пуста ли очередь, нужно воспользоваться функцией empty(). - Если ваша очередь пуста — возвратит true. - Если же в ней что-то есть — возвратит false. В коде использовались все перечисленные методы. Выберете, что будет результатом программы.
1пользователь должен ввести 6 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый первый элемент (после удаления). Далее будет выведен на экран последний элемент в очереди
2пользователь должен ввести 7 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый первый элемент (после удаления). Далее, строка «Очередь не пуста! и «Process returned 0 (0x0) execution time : 0.010 s. Press any key to continue»✓ Правильный ответ
3пользователь должен ввести 5 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый первый элемент (после удаления). Далее строка «Очередь не пуста!»
✓ Правильный ответ
пользователь должен ввести 7 чисел. Затем будет указан самый первый элемент в очереди. Потом он будет удален и выведен на экран новый первый элемент (после удаления). Далее, строка «Очередь не пуста! и «Process returned 0 (0x0) execution time : 0.010 s. Press any key to continue»
Вопрос 61
Конструктор – это…
1специальный метод без параметров, имя которого состоит из символа ~ и имени класса
2специальная функция класса, которая вызывается при создании нового объекта этого класса, и предоставляет возможность инициализировать объекты во время их создания, и гарантировать, что все данные члены будут иметь корректные значения
3символ, который помогает выполнять определенные математические и логические вычисления с операндами
Вопрос 62
Деструктор – это…
1специальный метод без параметров, имя которого состоит из символа ~ и имени класса
2специальная функция класса, которая вызывается при создании нового объекта этого класса, и предоставляет возможность инициализировать объекты во время их создания, и гарантировать, что все данные члены будут иметь корректные значения
3символ, который помогает выполнять определенные математические и логические вычисления с операндами
Вопрос 63
При передаче параметра по значению, конструктор будет вызываться рекурсивно, поэтому он должен иметь в качестве параметра …
1ссылку
2функцию
3переменную
Вопрос 64Ответ открыт бесплатно
Перегруженные функции подчиняются тем же правилам относительно типов параметров, что и …
1конструкторы✓ Правильный ответ
2деструкторы
3методы
✓ Правильный ответ
конструкторы
Вопрос 65
В процессе выполнения операции присваивания между существующими объектами одного типа обычно вызывается …
1конструктор по умолчанию
2конструктор копирования
3никакой конструктор не вызывается
Вопрос 66
Варианты использования больше всего нужны для того, …
1чтобы получать сведений о проблемах, возникших в программном коде
2чтобы узнать, какие в классах могут быть конструкторы
3чтобы обеспечивать выбор подходящих атрибутов класса
Вопрос 67Ответ открыт бесплатно
Конструктор копирования вызывается …
1при наследовании базового класса
2при описании нового объекта с инициализацией другим объектом этого же типа✓ Правильный ответ
3при присваивании объекта новому типу
✓ Правильный ответ
при описании нового объекта с инициализацией другим объектом этого же типа
Вопрос 68
Установите соответствие между терминами и определениями
1конструктор копирования
2конструктор с параметрами
3конструктор перемещения
4конструктор, принимающий в качестве аргумента объект того же класса
5конструктор, принимающий один или более аргументов
6конструктор, принимающий на входе значение неконстантной ссылки на объект класса, и используется для передачи владения ресурсами этого объекта
Вопрос 69
Когда вызывается конструктор, автоматически создаются объекты при определенных условиях. Определите соответствие между объектами и условиями создания конструктора.
1для локальных объектов
2для глобальных статических объектов
3для объектов, создаваемых в динамической памяти
4при выполнении оператора, в котором они объявлены
5перед вызовом функции main, для своих статических значений функции – при начальном выполнении этой функции
6при выполнении операции new
Вопрос 70
При автоматическом вызове деструктора, для объектов при определенных условиях, определите соответствие между объектами и условиями уничтожения.
1для локальных объектов
2для глобальных статических объектов
3для объектов, создаваемых в динамической памяти
4при выходе из блока, в котором они объявлены
5после завершения функции main
6при выполнении операции delete
Вопрос 71Ответ открыт бесплатно
Проставьте последовательность создания конструктора
Определите последовательность действий, если есть два класса, один из которых базовый, а другой — унаследованный от базового.
1выполняется компиляция
2выполняется вызов конструктора унаследованного класса
3выполняется вызов конструктора базового класса
Вопрос 73
Конструктор является типом метода класса, который автоматически вызывается при создании объекта этого же класса, а деструктор — это тип метода класса, который выполняется при удалении объекта класса. Ниже представлен код, подумайте какой тип метода класса здесь используется. Опишите код программы:
1в данном коде описывается класс «date», он имеет переменные день и год. Здесь применен деструктор date(). Он удаляет с динамической памяти объект «month»
2в данном коде описывается класс «day» и «year», данные имеют открытый тип. Здесь применен конструктор date()
3в данном коде описывается класс «date», он имеет переменные месяц и год. Здесь применен деструктор date(). Он удаляет с динамической памяти объект «month»
Вопрос 74Ответ открыт бесплатно
Предсказать результат следующей программы:
1на экран выйдет сообщение «0», т.к. деструктор удалит все значения переменной
2на экран выйдет сообщение «Compiler Error in line cout
3на экран выйдет сообщение «Compiler Error in line cout t.getY();», т.к. в компиляторе ошибка в строке «cout✓ Правильный ответ
✓ Правильный ответ
на экран выйдет сообщение «Compiler Error in line cout t.getY();», т.к. в компиляторе ошибка в строке «cout
Вопрос 75
В отличие от обычных методов, конструкторы имеют определенные правила их именования: конструкторы всегда должны иметь то же имя, что и класс (учитываются верхний и нижний регистры), конструкторы не имеют типа возврата (даже void). Перед Вами код. Опишите его результат.
1на экран выведется . Согласно стандарту, выбор одной из перегруженных функций осуществляется по правилу «Наиболее подходящей функции»
2на экран выведется . "Hello world" имеет тип const char* и приведение его к POD-типу bool целесообразней, чем к типу std::string
3на экран ничего не выведет. Приведения типов нет
Вопрос 76
Оператор разрешения обычно …
1… ограничивает видимость переменных для определенных методов
2… обозначает, от какого базового класса создан производный
3… определяет отдельный класс
Вопрос 77Ответ открыт бесплатно
К преимуществам использования наследования не относится:
1обеспечение развития класса путем естественного отбора✓ Правильный ответ
2облегчение создания классов
3избежание переписывания кода
4предоставление полезной концептуальной основы
✓ Правильный ответ
обеспечение развития класса путем естественного отбора
Вопрос 78
Назначение наследования состоит в том, чтобы:
1передавать аргументы объектам классов
2создавать более общие классы в более специализированных
3улучшать сокрытие данных и их инкапсуляцию
Вопрос 79
Механизм формирования новых классов из уже существующих или базовых классов – это …
1полиморфизм
2наследование
3абстрагирование
Вопрос 80
Укажите первую строку описания класса Tire, который является производным классов Wheel и Rubber:
1class Wheel: public Tire
2class Tire: public Wheel,public Rubber
3class Rubber: public Tire
Вопрос 81Ответ открыт бесплатно
Общий синтаксис механизма наследования выглядит следующим образом:
1class имя: тип_наследования имя_базового_класса {// программный код производного класса}✓ Правильный ответ
2classname имя: имя_базового_класса {// программный код производного класса}
3class имя: тип_наследования {// программный код производного класса}
✓ Правильный ответ
class имя: тип_наследования имя_базового_класса {// программный код производного класса}
Вопрос 82
Установите соответствие между терминами и определениями:
1множественное наследование
2простое наследование
3виртуальное наследование
4когда у подкласса два или более суперкласса
5когда подкласс имеет одного родителя
6предотвращает появление множественных объектов базового класса в иерархии наследования
Вопрос 83
Установите соответствие между типами наследования и их значениями
1public
2protected
3private
4все унаследованные данные становятся открытыми
5все унаследованные данные становятся защищенными
6все унаследованные данные становятся приватными
Вопрос 84Ответ открыт бесплатно
Установите соответствие между операциями в наследовании и их значениями
1перегрузка функций✓ Правильный ответ
2операция разрешения✓ Правильный ответ
3иерархия классов✓ Правильный ответ
4необходима, если для объектов базового и производного классов в вашей программе, используются одинаковые вызовы✓ Правильный ответ
5позволяет точно определить к какому классу относится вызываемый метод✓ Правильный ответ
6позволяет определять новые классы, на основе уже имеющихся✓ Правильный ответ
✓ Правильный ответ
перегрузка функций = необходима, если для объектов базового и производного классов в вашей программе, используются одинаковые вызовы ; операция разрешения = позволяет точно определить к какому классу относится вызываемый метод ; иерархия классов = позволяет определять новые классы, на основе уже имеющихся
Вопрос 85
Проставьте последовательность выполнения представленного кода:
1в классе Child указываются значения
2прописываются доступы к к члену класса Parent
3описывается класс Parent
4указывается, что класс Child наследуется от Parent
Вопрос 86
Проставьте последовательность создания кода:
1прописываем значение переменной количества часов преподавателя
2прописываем фамилию имя отчество учителя
3прописываем вывод фамилии имени отчества учителя
4прописываем вывод «Количества часов:»
Вопрос 87
Проставьте последовательность создания кода простого наследования:
1в классе были определены только те члены, которые являются общими для всех объектов этого класса
2далее ввели, что каждый человек (независимо от пола, профессии и т.д.) имеет имя и возраст
3для облегчения сортировки мы добавили в класс метод getName(), дающий доступ к именам из функции
Вопрос 88Ответ открыт бесплатно
Описать код программы:
1в коде описано открытое наследование. В результате, данные из базового класса остаются в производном классе✓ Правильный ответ
2в коде описано закрытое наследование. В результате, данные из производного класса закрыты от данных базового класса
3в коде описано защищенное наследование. В результате, данные из базового класса защищены от данных производного класса
✓ Правильный ответ
в коде описано открытое наследование. В результате, данные из базового класса остаются в производном классе
Вопрос 89
Важный момент при наследовании – это перегруженные функции-методы класса-потомка. Если в классе-родителе и в его классах-потомках встречаются методы с одинаковым именем, то для объектов класса-потомка компилятор будет использовать методы именно класса-потомка. Перегруженные методы класса-потомка, могут вызывать методы класса-родителя. В таком случае, важно помнить, что необходимо правильно определить область действия с помощью оператора «::». Иначе, компилятор воспримет это, как вызов функцией самой себя. Наглядно, если бы мы перегрузили в классе функцию - это выглядело бы так. Опишите, что указывает данная запись кода.
1эта запись указывает компилятору — если значение FirstClass не равно нулю — вызвать метод show_value() класса value. А он, в свою очередь, отобразит это значение на экране
2эта запись указывает компилятору — если значение value не равно нулю — вызвать метод FirstClass класса show_value(). А он, в свою очередь, отобразит это значение на экране
3эта запись указывает компилятору — если значение value не равно нулю — вызвать метод show_value() класса FirstClass. А он, в свою очередь, отобразит это значение на экране
Вопрос 90
В определенных ситуациях могут появиться проблемы, связанные со множественным наследованием. Допустим, что в обоих базовых классах существуют методы с одинаковыми именами, а в производном классе метода с таким именем нет. Рассмотрим пример. Как в этом случае объект производного класса определит, какой из методов базовых классов выбрать?
1проблема решается путем использования оператора разрешения, определяющего класс, в котором находится метод. Таким образом, «ObjC.A::show ( )» направляет нас к версии метода show(), принадлежащей классу A, а «objC.B::show ( )» направляет нас к методу, принадлежащему классу B, Б
2проблема решается путем использования перегрузки функций. Таким образом, «ObjC.A::show ( )» направляет нас к версии метода show(), принадлежащей классу С, а «objC.B::show ( )» направляет нас к методу, принадлежащему классу A
3проблема решается путем использования оператора наследования. Таким образом, «ObjC.A::show ( )» направляет нас к версии метода show(), принадлежащей классу B, а «objC.B::show ( )» направляет нас к методу, принадлежащему классу C
Вопрос 91Ответ открыт бесплатно
Обработка исключительной ситуации – это …
1… механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы, и приводят к невозможности дальнейшей отработки программой её базового алгоритма✓ Правильный ответ
2… механизм, предназначенный для описания значения адреса ячейки памяти
3… единение различных переменных (даже с разными типами данных), которому можно присвоить имя
✓ Правильный ответ
… механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы, и приводят к невозможности дальнейшей отработки программой её базового алгоритма
Вопрос 92
Оператор присваивания – это …
1… особый вид оператора, который выполняет пропуск оставшейся части кода тела цикла и переходит к следующей итерации цикла
2… особый вид оператора, используемый для присваивания объектов одного класса друг другу
3… оператор, который применяют для изменения управления в программе
Вопрос 93
Исключение – это …
1стандартный заголовочный файл шаблонов, которые определяют контейнеры, алгоритмы и т. д.
3реакция на исключительное обстоятельство, которое возникает во время работы программы
Вопрос 94Ответ открыт бесплатно
В C ++ с помощью ключевого слова «throw» функция может …
1указывать исключения, которые она генерирует✓ Правильный ответ
2выполнять одну перестановку в последовательности выбранного диапазона
3обеспечивать объявления и другие данных библиотечных функций, перегружаемых операций и объектов
✓ Правильный ответ
указывать исключения, которые она генерирует
Вопрос 95
Исключительные ситуации, возникающие при работе программы, можно разделить на два основных типа:
1целочисленные и символьные
2с данными и без данных
3асинхронные и синхронные
Вопрос 96
Процесс целочисленного деления на ноль является
1примером исключительной ситуации в С++
2примером создания нового блока кода
3примером уменьшения памяти
Вопрос 97
Механизм исключений использует три слова C++: catch, throw и try. Установите соответствие между терминами и определениями:
1catch
2throw
3try
4блок, при котором программа перехватывает исключение с помощью обработчика исключения в том месте программы, где вы хотите обработать проблему
5блок, при котором программа выдает исключение при обнаружении проблемы
6блок, при котором определяется блок кода, для которого будут активированы определенные исключения
Вопрос 98Ответ открыт бесплатно
Алгоритмы в STL выполняют сложные операции, типа сортировки и поиска. Однако, для выполнения более простых операций, специфичных для конкретного контейнера, требуются методы. Установите соответствие между методом и назначением.
1begin()✓ Правильный ответ
2empty()✓ Правильный ответ
3max_size()✓ Правильный ответ
4возвращает итератор на начало контейнера (итерации будут производиться в прямом направлении)✓ Правильный ответ
5возвращает true, если контейнер пуст✓ Правильный ответ
6возвращает максимально допустимый размер контейнера✓ Правильный ответ
✓ Правильный ответ
begin() = возвращает итератор на начало контейнера (итерации будут производиться в прямом направлении) ; empty() = возвращает true, если контейнер пуст ; max_size() = возвращает максимально допустимый размер контейнера
Вопрос 99
При работе программ возникают исключительные ситуации, когда дальнейшее нормальное выполнение приложения становится невозможным. Чтобы справиться с этими ситуациями, программисту помогают средства С++ catch, try и throw. Установите соответствие между конструкцией и описанием ее функции.
1catch
2try
3throw
4обработчик ошибочной ситуации
5операторы защищенного блока
6оператор возбуждения собственных исключений
Вопрос 100
Проставьте последовательность действий программы при возникновении ошибки.
1код нормально выполняется вне блока повторных попыток
2управление переходит в блок повторных попыток
3какое-то выражение в этом блоке приводит к возникновению ошибки в методе
4метод генерирует исключение
5управление переходит к обработчику ошибок (улавливающему блоку), следующему сразу за блоком повторных попыток
Вопрос 101Ответ открыт бесплатно
Проставьте последовательность действий процесса обработки исключений, возбужденных оператором throw:
1заканчивается выполнение защищенного try-блока: раскручивается стек подпрограмм, вызываются деструкторы для тех объектов, время жизни которых истекает и т.д.✓ Правильный ответ
2формируется статическая переменная с параметром, заданным в операторе throw. Она будет существовать до тех пор, пока исключение не будет обработано. Если переменная-исключение является объектом класса, при ее создании работает конструктор копирования✓ Правильный ответ
3реализовывается поиск первого из catch-блоков, который пригоден для обработки созданного исключения✓ Правильный ответ
✓ Правильный ответ
заканчивается выполнение защищенного try-блока: раскручивается стек подпрограмм, вызываются деструкторы для тех объектов, время жизни которых истекает и т.д. ; формируется статическая переменная с параметром, заданным в операторе throw. Она будет существовать до тех пор, пока исключение не будет обработано. Если переменная-исключение является объектом класса, при ее создании работает конструктор копирования ; реализовывается поиск первого из catch-блоков, который пригоден для обработки созданного исключения
Вопрос 102
Проставьте последовательность стандартных исключений в иерархии родительско-дочерних классов.
1std:overflow_error
2std:runtime_error
3std:exception
Вопрос 103
Рассмотрим программный код, представленный в листинге. Он очень простой. Каким будет результат, если после выполнения программы ввести отрицательное число?
1после выполнения программы на экран выведется: This application has requested the Runtime to terminate it in an unusual way. Please contact the application’s support team for more information. terminate called after throwing an instance of ‘std::bad_alloc’ what(): std::bad_alloc
2после выполнения программы на экран выведется: A part of conditional expression is always true: 0xff. babygrid.cpp 711
3после выполнения программы на экран выведется: Dereferencing of the null pointer 'cond_col' might take place
Вопрос 104
В представленной программе используются throw, try и catch вместе. Результат выполнения программы: We caught an int exception with value -1. Continuing our way! Опишите, как работают блоки программы:
1оператор try используется для генерации исключения -1 типа int. Затем блок throw обнаруживает оператор try и перемещает его в соответствующий блок catch, который обрабатывает исключения типа int. Блок catch типа int и выводит соответствующее сообщение об ошибке
2оператор throw используется для генерации исключения -1 типа int. Затем блок try обнаруживает оператор throw и перемещает его в соответствующий блок catch, который обрабатывает исключения типа int. Блок catch типа int и выводит соответствующее сообщение об ошибке
3оператор throw определяет тип объекта для генерации исключения -1 типа int. После блок try удаляет оператор throw и инициирует блок catch, который обрабатывает исключения
Вопрос 105Ответ открыт бесплатно
Рассмотрим пример использования блока try…catch Текст программы типа Console Application следующий. Какой будет результат программы?
1если пользователь введет a = 5 и b = 0, то ответ ошибки будет следующим: «Division by 0»✓ Правильный ответ
2если пользователь введет a = 5 и b = 0, то ответ ошибки будет следующим: «Negative root»
3если пользователь введет a = 2 и b = 0, то ответ ошибки будет следующим: «Out of range»
✓ Правильный ответ
если пользователь введет a = 5 и b = 0, то ответ ошибки будет следующим: «Division by 0»
О материалах и доступе
Что входит в набор «Введение в объектно-ориентированное программирование.ои(dor)»?
105 вопросов с вариантами из опубликованных тестов (7). Сверьте формулировки и варианты с вашим заданием перед покупкой: разные программы могут содержать разные вопросы.
Какие ответы можно посмотреть бесплатно?
Нажмите «Показать ответы бесплатно»: после завершения индикатора откроется бесплатная часть ответов. Бесплатные ответы отмечены зелёным. При нескольких правильных вариантах отмечены все варианты из ключа ответа. Остальные ответы доступны после покупки.
Как получить полный доступ?
Стоимость — 2 499 ₽. Войдите в личный кабинет и оплатите выбранный предмет. Доступ действует 7 дней; подписки и автоматических списаний нет.
Что делать, если обнаружена ошибка?
Напишите нам и пришлите номер заказа, формулировку вопроса и подтверждение ошибки. Гарантия: 1 ошибка — вернём деньги.