Ответы 2012 вариант 3 (Коллоквиум. Варианты заданий и ответы)
Описание файла
Файл "Ответы 2012 вариант 3" внутри архива находится в папке "Коллоквиум. Варианты заданий и ответы". Документ из архива "Коллоквиум. Варианты заданий и ответы", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Ответы 2012 вариант 3"
Текст из документа "Ответы 2012 вариант 3"
Ответы - вариант 3_2012
Максимальная оценка каждой задачи – 10 баллов (всего 100 баллов)
Различаются следующие виды полиморфизма:
статический (на этапе компиляции, реализуется с помощью перегрузки функций/операций),
динамический (во время выполнения программы, реализуется с помощью виртуальных функций),
параметрический (на этапе компиляции, с использованием механизма шаблонов).
Критерии: За каждый недостающий вид полиморфизма - -4,
За каждый неназванный механизм реализации - -2,
За каждый неверный ответ о этапе разрешения полиморфизма - -2.
2.
class C {
int x;
public:
explicit C (int y) { x = 2 * y; }
int get () { return x; }
C operator + ( C c ) {
C t ( x + c.x );
return t;
}
};
Критерии: За каждый недостающий, лишний метод, /лишний констр.- - 4
За отсутсивие explicit - -4
За каждую ошибку реализации метода (неверный вывод…) - - 2
3. Cons Copy Cons Des Des 1 Des
Критерии: За каждую неверную/лишнюю/недостающую печать - - 4
Если пропущен конструктор, то за парный ему деструктор - не наказывать.
4.
1) перед деструктором базового класса добавить virtual.
2) добавить D (int d = 0) {...}
Критерии: За каждое не сделанное добавление - - 5
5.
class Cls {
int i;
public:
Cls (int x) { i = x; }
Cls (const Cls & y) { i = y.i; }
const Cls f ( const Cls c) const{ cout << c. i << endl; }
};
const Cls t1 (const Cls * a) {
Cls b = Cls (3);
return a -> f ( b );
}
Критерии: За каждое не найденную или лишнюю ошибку - - 5
-
template < class T >
void f (const T & t) {
if (t.size ( ) < 2) return ;
typename T :: const_reverse_iterator p = t.rbegin ( ) ;
for (int i = 0; i < t.size() / 2; i++, p++)
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.
g ( ) from T
7 7 7
Критерии: За неверный вызов функции - - 5
За любую ошибку со статической переменной - - 5
8.
SCatch_int ¬ SConstr ¬ Copy ¬ SCatchS& ¬ Destr ¬ MainCatchS& ¬ Destr
Критерии: За отсутствие Copy (и его Destr) - - 5
За каждую другую ошибку - - 2
9.
void puthi ( B * pb, D * pd ) {
try { D d ; int i = 10;
if (typeid (*pb) == typeid (d)) { // возможен вариант с dynamic_cast
pd = (D*) pb;
while (i) srtcpy ((pd -> txt) [--i] , “Hi!”);}
}
catch ( bad_typeid ) { cout << “NULL!\n”; }
}
Критерии: Правильно добавлены средства RTTI - - 10
Иначе - - 0
За отсутствие try-catch блока не наказывать,
если это не может привести к ошибке.
10.
-
при создании объекта (при обработке описания объекта),
-
при создании объекта в динамической памяти (по new),
-
при композиции объектов наряду с собственным конструктором вызывается конструктор объекта – члена класса,
-
при создании объекта производного класса также вызывается конструктор и базового класса,
-
при автоматическом приведении типов с помощью конструктора преобразования.
Критерии: За отсутствие каждой из трех ситуаций - - 4