2009 Вариант 1 (1119593)
Текст из файла
Вариант 1_2009 Ф.И.О.___________________________________№ группы________
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
1. Есть ли ошибки в реализации функций C::g() и main()? Если есть, исправьте найденные ошибки, используя операцию разрешения области видимости "::". Для всех операторов этих функций, используя операцию разрешения области видимости "::", также укажите, из какой области видимости выбираются участвующие в их записи имена.
int x = 0;
int f (int a, int b) { return x = a + b; }
class A { int x;
public: A (int n = 1) { x = n; }
int f () { return ::x = x; } };
class B { int x;
public: B (int n = 2) { x = n; } };
class C: public A, public B { int x;
public: int f (int a) { return ::x = x; }
void g (); };
void C::g() { x = f ();
f (3);
x = f (4, 5);
x = 6;
}
int main () { C c;
c.f ();
c.f (7);
x = f (‘8’, 9);
return -1;
}
2. Есть ли ошибки в приведенном фрагменте программы на С++? Если есть, то объясните, в чем они заключаются. Ошибочные конструкции вычеркнуть из текста программы. Что будет выдано в стандартный поток вывода при работе программы?
class A {
public: virtual void f (int x) { h (x); cout << "A::f," << x << endl; }
void g () { h (0); cout << "A::g" << endl; }
virtual void h (int k) { cout << "A::h," << k << endl; }
};
class B: virtual public A {
public: void f (int y) { h (y); cout << "B::f," << y << endl; }
void g () { h (1); cout << "B::g" << endl; }
void h (int k) { cout << "B::h," << k << endl; }
};
int main( ){
A a; B b; A * p = & b;
p -> f (2);
p -> g ();
p -> h ();
p -> h (3);
}
3. Описать прототипы двух перегруженных функций f() из некоторой области видимости, для которых будут верны следующие обращения к ним:
f (0, 1); f (1, 0); f (0, "m"); f ("n", 0);
4. Для объектов из задания 1 определить, тела каких конструкторов и деструкторов (возможно пустые, если они не определены явно) и в каком порядке будут исполнены при работе следующего фрагмента программы:
int main () { C c; B b = c; A a = с; }
5. Для класса комплексных чисел template<class T> class complex { T r; T i; ... };
написать два варианта реализации операции "*", выполняющей умножение одного комплексного числа на другое методом класса и функцией-другом этого класса.
6. Дать определения абстрактного типа данных и абстрактного класса в языке Си++. Есть ли различия в этих понятиях? Можно ли создавать объекты и описывать конструкторы этих типов?
7. Что будет выдано в стандартный канал вывода при работе следующей программы?
struct X; void f(X & x, int n);
int const P = 1; int const Q = 1; int const R = 1;
struct X { X() { try { f(*this, -1); cout << 1 << endl; }
catch (X) { cout << 2 << endl; }
catch (int) { cout << 3 << endl; }
}
X (X &) { cout << 4 << endl; }
~X () { cout << 5 << endl; }
};
struct Y: X { Y () { f(*this, -1);
cout << 6 << endl; }
Y (Y &) { cout << 7 << endl; }
~Y () { cout << 8 << endl; }
};
void f(X & x, int n) { try { if (n < 0) throw x;
if (n > 0) throw 1;
cout << 9 << endl;
}
catch (int) { cout << 10 << endl; }
catch (X& a) { cout << 11 << endl;
f(a, 1);
cout << 12 << endl;
throw;
}
}
int main() { try { Y a; }
catch (...) { cout << 13 << endl;
return 0;
}
cout << 14 << endl;
return 0;
}
8. Есть ли синтаксические ошибки в тексте приведенной программы? Можно ли исправить описание класса, не вводя дополнительных членов и не убирая имеющиеся, чтобы программа стала верной? Если да, то как?
class A { static int i;
static void f () { g (); cout << “f ()” << endl; }
void g () { if (i >= 0) i = -1, f ();
cout << “g ()” << endl; }
};
int A::i = 1;
int main () { A::i = 1; A a; a.f(); a.i = 0; }
9. Описать последовательность отождествления типов параметров перегружаемых функций для случая функций с одним параметром. Приведите примеры для каждого из шагов последовательности.
10. Написать функцию g() с тремя параметрами: непустой контейнер-вектор типа vector<int>, непустой контейнер-список типа list<int>, целое число – шаг по первому контейнеру. Функция должна, последовательно проходя по списку от начала к концу, перезаписывать на место очередного его элемента соответствующий очередному шагу элемент вектора (сам вектор при этом не изменяется), а затем распечатывать элементы списка в обратном порядке. Функция возвращает количество изменённых элементов списка.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.