Help!

  • Автор темы din-gior
  • Дата начала
D

din-gior

Гость
#1
Помогите пожалуйста решить задачки
45. int F() { struct X { int s, p; }; X a = {1, 2}; X b = {3, 4}; return a.s + b.p; }
46. bool F() { struct X { int s, p; }; X a = {1, 2}; X b = {3, 4}; return a.s > b.p; }
47. int F() { class A { public: int x; int Out() { return x / 2;} }; A a; a.x = 1; return a.Out(); }
48. int F() { class A { public: int y; A(int x) { y = 2; } }; A z(0); return z.y; }
49. bool F() { class A { int x; public: A(int y) { x = y + 1; } }; int k = 5; A z(k); return k; }
50. bool F() { class A { public: int y; A(int x = 0) { y = x; } }; A z(8); return z.y == 0; }
 
C

Creo

Гость
#3
Помогите пожалуйста решить задачки
45. int F() { struct X { int s, p; }; X a = {1, 2}; X b = {3, 4}; return a.s + b.p; }
46. bool F() { struct X { int s, p; }; X a = {1, 2}; X b = {3, 4}; return a.s > b.p; }
47. int F() { class A { public: int x; int Out() { return x / 2;} }; A a; a.x = 1; return a.Out(); }
48. int F() { class A { public: int y; A(int x) { y = 2; } }; A z(0); return z.y; }
49. bool F() { class A { int x; public: A(int y) { x = y + 1; } }; int k = 5; A z(k); return k; }
50. bool F() { class A { public: int y; A(int x = 0) { y = x; } }; A z(8); return z.y == 0; }
Вообще-то насколько я понял нужно ответить, что вернет ф-ция.
45.
Код:
int F() 
{ 
struct X 
{ 
int s, p; 
};
X a = {1, 2}; 
X b = {3, 4}; 
return a.s + b.p; 
}
В функции локально определена структура и инициализированна значениями 1, 2 и 3, 4 соответственно. Вернет значение 5 т.е 1+4. По анологии 46 вернёт логическое значение false т.к 1>4 ложное утверждение. А вообще берем учебник и читаем следующие темы инициализация переменных, конструкторы, классы и структуры ;) Успехов... :)
 
C

Creo

Гость
#4
47 Задача немного интересней. Там создается класс с int переменной и int-возвращающей ф-цией, то есть глобальная функция вернет не 0,5 а 0.
48 Тоже еще то дурилово. Создан класс с конструктором. Конечно его инициализируют 0 но этот ноль нигде не участвует Y(переменной-члену) присвоят значение 2. Следовательно ф-ция вернет 2.
Следующие два вопроса отвечу завтра. Сегодня лень уже. А вообще надо читать книги, хоть немного. Веть ты, может быть, программист в будующем... Кул хацкер.. ;)
 
C

Creo

Гость
#5
Как-то безграмотно ответил :( Вы уж простите. Конструктор не инициализируют нулем(вообще фраза дибильная... ;) ). Но в остальном фсе правильно. Вроде...
 
C

Creo

Гость
#6
Помогите пожалуйста решить задачки
49. bool F() { class A { int x; public: A(int y) { x = y + 1; } }; int k = 5; A z(k); return k; }
50. bool F() { class A { public: int y; A(int x = 0) { y = x; } }; A z(8); return z.y == 0; }
Вот как и обещал последние две задачки. В первой задаче всю мутятину с классом вообще можно пропустить т.к. все равно возвращают значение локальной переменной k, которая с классом никак не связана. Т.е. return 5. Так как возвращаймое значение должно быть логического типа, то компилятор преобразует 5 в true (в Си и Си++ любое ненулевое значение эвивалентно true, нулевое -- false).
Во второй задаче возвращается значение логического выражения z.y ==0; если z.y равно нулю, то true иначе сам догодайся ;) . Теперь осталось определить, чему равно z.y. Оно равно восьми. Почему?
Читай тему конструкторы и параметры передаваемые в ф-цию по умолчанию. ВСЁ :(
 
D

din-gior

Гость
#7
Пасибо большое всем, я не программист совсем в будущем, а электротехник, а книжки читать просто некогда было 200 задач таких вот