Ответы 2012 вариант 2 (Коллоквиум. Варианты заданий и ответы)
Описание файла
Файл "Ответы 2012 вариант 2" внутри архива находится в папке "Коллоквиум. Варианты заданий и ответы". Документ из архива "Коллоквиум. Варианты заданий и ответы", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Ответы 2012 вариант 2"
Текст из документа "Ответы 2012 вариант 2"
Ответы - вариант 2_2012
Максимальная оценка каждой задачи – 10 баллов (всего 100 баллов)
1.
В С++ наследование бывает public, private и protected. Private-члены базового класса видны, но недоступны в производном классе, public-члены – и видны, и доступны, но только внутри производного класса.
Критерии: За каждый недостающий способ наследования - -4
Неверный ответ о статусе private и public членов - -4
Если не упомянута видимость - не наказывать.
2.
class B {
int x, y;
public:
B (int a, int b = 5) { x = a; y = b; }
int get ( ) { return x + y; }
B& operator=+ (B & b){ x += b.x; y += b.y; return *this;}
};
Критерии: За каждый недостающий/неверный метод - - 4
За каждую мелкую ошибку реализации - -2
3.
Cons Cons Des Copy Des 3 Des
Критерии: За каждую неверную/лишнюю/недостающую печать - - 4
Если пропущен конструктор, то за парный ему деструктор - не наказывать.
4.
1) перед деструктором базового класса добавить virtual.
2) добавить В (int a = 0) {...}
Критерии: За каждое не сделанное добавление - - 5
5.
class Cl {
int i;
public:
Cl (int x) { i = x; }
Cl ( const Cl & y) { i = y.i; }
const Cl f ( const Cl & c) const { cout << c. i << endl; }
};
const Cl t1 (const cl a) {
Cl b = Cl (5);
return b.f ( a );
}
Критерии: За каждое не найденную или лишнюю ошибку - - 5
-
template < class T >
void f (const T & t) {
if (t.size ( ) < 3) return ;
typename T :: const_reverse_iterator p = t.begin ( ) ;
cout << * p + * ( ++p ) + * ( ++p ) << endl; // можно без скобок и лучше не
// рассчитывать на порядок вычисления операндов.
}
int main () {
vector <int > vec (5);
for (int i = 0; i < 5; i++)
vec.push_back (i);
f (vec); // или f <vector <int> > (vec);
return 0;
}
Критерии: Пропуск typename - -4,
Если параметр функции const, а итератор – не const - -4,
За каждое другую ошибку - - 3
Отсутствие & в заголовке функции - -1.
7.
add_st (K*) from K
5 5 5
Критерии: За неверный вызов функции - - 5
За любую ошибку со статической переменной - - 5
8.
SConstr ¬ Copy ¬ SCatchS& ¬ Destr ¬ SConstr ¬ Main ¬ Destr ¬ Destr
Критерии: За отсутствие Copy (и его Destr) - - 5
За каждую другую ошибку - - 2
9.
void putnull ( B * pb ) {
try { D d, * pd = (D*) pb;
if (typeid (*pb) == typeid (d)) // возможен вариант с dynamic_cast
for (int i = 0; i < 30; i++) pd -> mas [ i ] = 0; }
catch ( bad_typeid ) { cout << “NULL!\n”; }
}
Критерии: Правильно добавлены средства RTTI - - 10
Иначе - - 0
За отсутствие try-catch блока не наказывать,
если это не может привести к ошибке.
10.
-
в случае: Box a (1, 2, 3); Box b = a;
-
в случае: Box c = Box (3, 4, 5); // оптимизирующий компилятор вызывает только обычный конструктор с указанными параметрами;
-
при передаче параметров функции по значению (при создании локального объекта);
-
при возвращении результата работы функции в виде объекта,
-
при генерации исключения-объекта класса.
Критерии: За отсутствие каждой из трех ситуаций - - 4