Ответы 2012 вариант 1 (Коллоквиум. Варианты заданий и ответы)
Описание файла
Файл "Ответы 2012 вариант 1" внутри архива находится в папке "Коллоквиум. Варианты заданий и ответы". Документ из архива "Коллоквиум. Варианты заданий и ответы", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Ответы 2012 вариант 1"
Текст из документа "Ответы 2012 вариант 1"
Ответы - вариант 1_2012
Максимальная оценка каждой задачи – 10 баллов (всего 100 баллов)
1.
АТД - тип данных с полностью скрытой (инкапсулированной) структурой, а работа с переменными такого типа происходит только через специальные, предназначенные для этого функции.
В С++ АТД реализуются с помощью классов (структур), все члены-данные которых расположены в privatе области.
Критерии: Неверное понятие АТД - -5,
Неверный ответ о реализации АТД в С++ - -5.
За отсутствие слов о работе с переменными АТД – не наказывать.
2.
class A {
int x;
public:
A ( int y = 7) { x = y; }
int get () { return x; }
int operator *= ( int y ) { return x *= y; }
};
Критерии: За каждый недостающий/неверный метод, /лишний констр. - - 4
За каждую мелкую ошибку реализации - - 2
3.
Cons Copy Cons Des Copy Des Des 1 Des
Критерии: За каждую неверную/лишнюю/недостающую печать - - 4
Если пропущен конструктор, то за парный ему деструктор - не наказывать.
4.
1) перед деструктором базового класса добавить virtual.
2) добавить либо В (float a = 0), либо D ( ) : B (0) {...}
Критерии: За каждое не сделанное добавление - - 5
5.
class A {
int i;
public:
A ( int x) { i = x; }
A (const A & y) { i = y.i; }
const A f (const A & z) const { cout << i << endl; }
};
const A t1 ( ) {
const A a = 5;
return a.f ( a );
}
Критерии: За каждое не найденную или лишнюю ошибку - - 5
-
template < class T >
void f (const T & t) {
if (t.size ( ) < 2) return ;
typename T :: const_reverse_iterator p = t.rbegin ( ) ;
cout << * ( ++p ) << endl; // можно без скобок
}
int main () {
list <int > lst;
for (int i = 0; i < 5; i++)
lst.push_back (i);
f (lst); // или f <list <int> > (lst);
return 0;
}
Критерии: Пропуск typename - -4,
Если параметр функции const, а итератор – не const - -4,
За каждое другую ошибку - - 3
Отсутствие & в заголовке функции - -1.
7.
f (int) from B
10 10 10 10
Критерии: За неверный вызов функции - - 5
За любую ошибку со статической переменной - - 5
8.
Copy ¬ SCatchS& ¬ Destr ¬ SConstr ¬ Destr ¬ MainCatch...
Критерии: За отсутствие Copy (и его Destr) - - 5
За каждую другую ошибку - - 2
9.
void f9 ( B & b, D & d, int n ) {
D * pd = ( n > 0 ) ? & d : (D*) & b;
if (typeid (*pd) == typeid (d)) // возможен вариант с dynamic_cast
strcpy (pd -> y, “one_variant\n”);
}
Критерии: Правильно добавлены средства RTTI - - 10
Иначе - - 0
10.
-
при свертке стека - при выходе из блока описания объекта, в частности при обработке исключений, завершении работы функции;
-
при уничтожении временных объектов - сразу, как только завершается конструкция, в которой они использовались;
-
при выполнении операции delete для указателя на объект (инициализация указателя - с помощью операции new),
-
при завершении работы программы при удалении глобальных/статических объектов.
Критерии: За отсутствие каждой из трех ситуаций - - 4