И.А. Волкова, А.А. Вылиток, Л.Е. Карпов - Сборник задач и упражнений по языку Си++, страница 2
Описание файла
PDF-файл из архива "И.А. Волкова, А.А. Вылиток, Л.Е. Карпов - Сборник задач и упражнений по языку Си++", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Внести добавления в описания заданных методов (не меняя вывод на экран!)структур B и D так, чтобы все конструкции main () были правильными, а на печать выдалось 776898.struct B {int x;B() {~B() {};x = 7;cout << 7; }cout << 8; }struct D : B {D( int d) { x = d ;~D() { cout << 9; }};int main () {B * p1 = new B [1],delete [ ] p1;delete [ ] p2;return 0;}cout << 6; }* p2 = new D[1];1.22. Есть ли ошибки в приведённом ниже фрагменте? Если да, объясните, в чём онизаключаются.a)int n;float f(float a, int t = 3, int d = n) {return a * (float) (t % d);}10b)float f(float a = 2.7, int t, int d = 8) {return sa * (float) (t % d);}с)enum { myparam = 18 };float f(float a, int t = myparam + 5, int d = t + 8) {return a * (float) (t % d);}2.Перегрузка операций. Перегрузка функций2.1.Даны описание класса и функции:class Cls {int i;public:Cls() { i = 1; }};void f(Cls * p, Cls * q) {*p = *q;}Дополните описание класса Cls (не изменяя описание функции f )так, чтобы толькоописание f стало ошибочным.2.2.
Описать прототипы двух перегруженных функций f из некоторой области видимости, для которых будут верны следующие обращения к ним:a)ffff(1);('+', '+');(2.3);(3, “str”);b)ffff();(“abc”);(2);('+', 3);c)ffff(0, 1);(1, 0);(0, "m");("n", 0);d)fffff("p");(x, 0);(0, 0);(x, "q");(1, "r");// где//////struct X {X(int);operator int();} x;11e)ffffff(1000000000000);(1);();(0, 0);("t");(1, "u");2.3. Для каждого вызова перегруженной функции с одним параметром укажите, какая функция и на каком шаге алгоритма будет выбрана.а)int f(int a = 0) { return a; }int f(double a) { return a; }int main() {short int s;int i;bool b;enum e {A, B, C};float f1 = 1.0f;f();f(s);f(f1);f(b);f(A);}b) int f(double a = 1.0){return a;}int f(long double a = 5.0){return a;}int main() {float f1 = 1.0f;double d = 2.0;long double ld = 3.0l;f();f(4);f(f1);f(d);f(ld);}c)int f(int a = 1){return a;}int f(long double a = 5.0){return a;}int main () {short int s;int i;bool b;float f1 = 1.0f;double d = 2.0;f(s);f(i);f(b);f(f1);f(d);}123.Наследование.
Видимость и доступность имен3.1. Если есть ошибки в реализации функций B::g () и main (), объясните, в чем онизаключаются.Для всех правильных операторов этих функций с помощью операции разрешения области видимости «::» укажите, из какой области видимости выбираются участвующие в их записи имена.Какие конструкторы и деструкторы и в каком порядке будут вызываться при работе данной программы?a)int x = 0;void f (int a, int b){x = a+b;}class A {int x;public:void f (){x = 2;}};class B: public A {public:void f (int a){::x = a;}void g ();};void B::g() {f();f(1);f(5 , 1);x = 2;}Bret (B & x, B & y) {return x;}int main () {B b;f(5);f('+', 6);b = ret (b,return 0;}b)b);double a = 0;void f (double x){a = x;}struct A {double a;void f (){a = 2;}};13class B : A {public:void f (int a){::a = a;}void g ();};void B::g() {f(1.2);f();a = 2;}voidempty (B & a, Bb) { }int main () {B d;f();f(6);empty (d, d);return 0;}c)int x = 0;void f(int a, int b) { x = a+b; }class A {int x;public:void f() { x = 2; }void f(char a1, char b1) { x = a1-b1; }};class B: public A {public:void f(int a) { ::x = a; }void g () {f();f(0);f(5.3 , 1);x = 1;}};int main () {B b;f(2);f(3, 'a');return 0;}d)double a = 0;void f(double x = 2) {a = x;}void f() {a = 1;}14struct BBase {double a;void f(){a = 2;}};class B: BBase {public:void f(int a) { ::a = a; }void g() {f('r');f();a = 2;}};int main () {B d;f();f(6);return 0;}e)float y = 0;void f(float a) {y = a;}class T {int y;public:void f() {y = 2;}};class B : public T {public:void f(float n, float m) { ::y = n * m; }void f(char c1, char c2) { ::y = c1 + c2; }void g () {f();f(1);f(-1 , 1);y = 2;}};int main () {B b;f(5);f('+', 6);return 0;}153.2.
Если есть ошибки в реализации методов заданных классов и функции main (),исправьте их, используя операцию разрешения области видимости «::».Какие конструкторы и деструкторы и в каком порядке будут вызываться при работе данной программы?a)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;B b = c;A a = с;c.f ();c.f (7);x = f (‘8’, 9);return -1;}b)int x = 0;int f() { return x = 1; }class A {int x;public:A( int n = 2) { x = n; }int f() { return x = 3; }int f(int a, int b) { return x = a % b; }};16class B: public A {int x;public:int f(int a) { return x = a; }int f(int a, int b) { return x = a + b; }int g(A * a, B * b);};intB::g (A * pa, B * pb) {x = f ();x = f (5)x = f (6, 6);x = A::f (5);return -1;}int main () {B a;class C {B b;A a;public:C(): b(), a (b) { }};C c;x = a.f ();x = a.f (7);return a.g (& a, & a);}c)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;}17int main () {C c;B b;A a;c.f();c.f(7);x = f(‘8’, 9);return -1;}d)int x = 0;int f() {return x = 1; }class A {int x;public:A( int n = 2) { x = n; }int f() { return x = 3; }int f(int a, int b) { return x = a % b; }};class B: public A {int x;public:int f(int a) { return x = a; }int f (int a, int b) { return x = a + b; }int g (A * a, B * b);};intB::g (A * pa, B * pb) {x = f();x = f(5);x = f(6, 6);x = A::f(5);return -1;}int main () {B a;x = a.f();x = a.f(7);class C {A a1;public:C(): a1(b) {}};C c;return a.g(& a, & a);}e)int x = 4;class A {int x;public:A(int n = 1);int f(int a = 0, int b = 0);};18class B: public A {public:int x;B(int n = 2);int f(int a);};class C: public B {int x;public:C(int n = 3);int f(int a, int b);int g(A * p);};int main () {A * p;B b;C c;A a = c;struct D {B b;D(): b(5) {}} d;p = & b;x = c.g(& c);x = c.f();x = c.f(x);x = c.f(x, 1);x = p -> f();x = p -> f(x);x = p -> f(x, 1);return 1;}f)int x = 4;class A {int x;public:A(int n = 3);int f(int a = 0, int b = 0);};class B: public A {int x;public:B(int n = 1);int f(int a = 0);};class C: public B {int x;public:C(int n = 2);int f(int a, int b);int g(A * p);};19int main () {A * p;B b;C c;class D {B b;A a;public:D(): a(b) {}} d;p = & b;x = c.g(& b);x = c.f();x = c.f(x);x = c.f(x, 1);x = p -> f();x = p -> f(x);x = p -> f(x, 1);return 2;}3.3.
Если есть ошибки в следующем фрагменте, то в чем они заключаются? Исправьте ошибки, ничего не удаляя, добавив в общей сложности не более 14 символов.class A {public:int * n;int m;};class B: public A {public:int * p;};class C: public A {public:int * c;};class D: public B, public C {public:int * e;};int main () {D fA, * f = new D;fA.m =0;return *((* f).e = & fA.m);}3.4. Если есть ошибки в следующем фрагменте, то в чем они заключаются? Исправьте ошибки, ничего не удаляя, добавив в общей сложности не более 12 символов.class S {public:int s;void sp(int si) { s = si; }};20class T: S {public:int t;void tp(int ti) { t = ti; s = ti; }};class U: T {public:int u;void up(int ui) { u = ui; t = ui; s = ui; }};void g() {U * pu = new U;T * pt = pu;S * ps = pu;}3.5.
Если есть ошибки в следующем фрагменте, то в чем они заключаются? Исправьте ошибки, ничего не удаляя, добавив в общей сложности не более 29 символов.class W {public:int * w;void wf (int * wp) { w = wp; }};class X: W {public:int * x;void xf (int * xp) { x = xp; w = xp; }};class Y: W {public:int * y;void yf (int * yp) { y = yp; w = yp; }};class Z: X, Y {public:int * z;void zf (int * zp) { z = zp; x = zp; y = zp; }};void h () {int hi;W * pw;X * px;Y * py;Z * pz;pz = new W;(*pz).w = & hi;pz -> xf ((*pz).X::w);}214.Виртуальные функции.
Абстрактные классы4.1.Описать условия включения механизма виртуальности для метода класса. Привести пример записи виртуальной функции и обращения к ней.4.2.Есть ли ошибки в приведенном фрагменте программы? Если есть, то объясните,в чем они заключаются. Ошибочные конструкции вычеркнуть из текста программы.
Что будет выдано в стандартный канал вывода при работе программы?class X {public:virtual int g (double x) {h ();cout << "X::g" << endl;return 1;}void h () { t ();cout << "X::h" << endl;}virtual void t (){ cout << "X::t" << endl;}};class Z: public X {public:int g (double y) {h ();cout << "Z::g" << endl;return 3;}virtual void h () { t (1);cout << "Z::h" << endl; }virtual void t (int k){ cout << "Z::t" << endl; }};int main(){X a;Z b;p -> g(1.5);p -> h();p -> t(5);}4.3.X * p = &b;Есть ли ошибки в приведенном фрагменте программы? Если есть, то объясните,в чем они заключаются. Ошибочные конструкции вычеркнуть из текста программы.
Что будет выдано в стандартный канал вывода при работе программы?class T {public:virtual int f (intcout << "T::f"return 0;}void g () {f (1);cout << "T::g"}virtual void h ()g ();cout << "T::h"}};x) {<< endl;<< endl;{<< endl;22class S: public T {public:int f (double y){cout << "S::f" << endl;return 2;}virtual void g () {f (1);cout << "S::g" << endl;}virtual void h () {g();cout << "S::h" << endl;}};int main(){T t; S s; T *p = &s;p -> f (1.5);p -> g ();p -> h ();}4.4.Есть ли ошибки в приведенном фрагменте программы? Если есть, то объясните, в чем они заключаются.