- •Р. Лафоре
- •Глава 1. Общие сведения 32
- •Глава 3. Циклы и ветвления 92
- •Глава 4. Структуры 142
- •Глава 5. Функции 168
- •Глава 6. Объекты и классы 217
- •Глава 7. Массивы и строки 261
- •Глава 8. Перегрузка операций 312
- •Глава 9. Наследование 361
- •Глава 10. Указатели 411
- •Глава 11. Виртуальные функции 476
- •Глава 12. Потоки и файлы 536
- •Глава 13. Многофайловые программы 596
- •Глава 14. Шаблоны и исключения 640
- •Глава 15. Стандартная библиотека шаблонов (stl) 681
- •Глава 16. Разработка объектно-ориентированного по 752
- •Глава 1 «Общие сведения» включает список тем, касающихся uml, с указа- нием их расположения в книге.
- •Глава 1
- •Глава 2
- •Глава 3
- •If внутри циклов
- •If и else во вложенных ветвлениях
- •Глава 4
- •Глава 5 Функции
- •Глава 6
- •Глава 7
- •123456. Россия
- •123456. Россия
- •Глава 8
- •Глава 9
- •Глава 10 Указатели
- •Main() передает адрес переменной var в ptrd в centimize()
- •Centimize() использует этот адрес для доступа к var
- •Глава 11
- •Глава 12
- •Тип:менеджер Фамилия: Александров Номер:1111
- •Тип:Ученый Фамилия: Лебедев Номер:2222
- •Тип:рабочий Фамилия:Шевелев Номер:3333
- •Глава 13
- •Глава 14
- •Много объектов разных классов в памяти Рис. 14.2. Шаблон класса
- •Алгоритмы используют итераторы для работы с объектами контейнеров. Рис. 15.1. Контейнеры, алгоритмы и итераторы
- •Глава 16
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10 Ответы на вопросы
- •Глава 11
- •Глава 12 Ответы на вопросы
- •Глава 13 Ответы на вопросы
- •Глава 14 Ответы на вопросы
- •Глава 15 Ответы на вопросы
- •Глава 16
3.
Верное решение:
//
ex4_3.cpp
//
использование структуры для моделирование
объема
//
помещения
#include
<iostream>
using
namespace std;
///////////////////////////////////////////////////////////
struct
Distance
{
int
feet;
float
inches;
};
///////////////////////////////////////////////////////////
struct
Volume
{
Distance
length;
Distance
width;
Distance
height;
};
///////////////////////////////////////////////////////////
int
main()
{
float
l, w, h;
Volume
room1 = { {16, 3.5}, {12, 6.25}, {8, 1.75} };
l
= room1.length.feet + room1.length.inches / 12.0;
w
= room1.width.feet + room1.width.inches / 12.0;
h
= room1.height.feet + room1.height.inches / 12.0;
cout
<< "Объем
="
<< l*w*h << "
кубических футов \n ";
return
0;
}
Ответы
на вопросы
г
(б
наполовину правильно).
Определении.
Правильный
ответ:
void
foot)
{
cout
<< "фу
:-) ";
}
Объявлением,
прототипом.
Тело.
Вызовом.
Описателем.
в.
Ложно.
Для
уяснения назначения аргументов.Глава 5
а,
б, в.
Пустые
скобки означают отсутствие аргументов.
Один.
Истинно.
В
начале объявления и описателя.
void.
Правильный
ответ:
main()
{
int
times2(int);
//
прототип
int
alpha = times2(37);
//
вызов
функции
}
г.
Изменение
исходного значения аргумента (или
желание избежать копи-
рования
большого аргумента).
а,
в.
Правильный
ответ:
int
bar(char);
int
bar(char,
char);
Быстрее,
больше.
Правильный
ответ:
inline
float
foobar(float
fvar)
a,
6.
Правильный
ответ:
char
blyth(int,
float
=
3.14159);
Видимостью,
временем жизни.
Функции,
определенные после переменных.
Те,
в которых она определена.
б,
г.
Слева
от знака равенства.
Решения
упражнений
1.
Верное решение:
// ex5_1.cpp
//
функция находит площадь окружности
#include
<iostream>
using
namespace std;
float
circarea(float
radius);
int
main()
{
double
rad;
cout
<< "\nВведите
радиус окружности:";
cin
>>
rad;
cout
<< "Площадь
равна "
<< circarea(rad) << endl;
return
0;
}
//
---------------------------------------------------------
float
circarea(float
r)
{
const
float
PI = 3.14159F;
return
r * r * PI;
}
Верное
решение:
//
ex5_2.cpp
//
функция возводит число в степень
#include
<iostream>
using
namespace std;
double
power(double
n, int
p = 2); //
p has default value 2
int
main()
{
double
number, answer;
int
pow;
char
yeserno;
cout
<< "\nВведите
число:";
//
get number
cin
>>
number;
cout
<< "Будете
вводить степень (y/n)?";
cin
>>
yeserno;
if(yeserno
== 'y')//
пользователю нужен не квадрат числа?
{
cout
<< "Введите
степень:";
cin
>>
pow;
answer
= power(number, pow); //
возвести число в степень
}
else
answer = power(number); //
квадрат числа
cout
<< "Ответ
"
<< answer << endl;
return
0;
}
//---------------------------------------------------------
//
power()
//
возвращает число n,
возведенное в степень p
double
power(double
n, int
p)
{
double
result = 1.0; //
начать с 1
for(int
j = 0; j < p; j++) //
умножить на n
result
*= n; //
p раз
return
result;
}
Верное
решение:
//
ex5_3.cpp
//
функция устанавливает наименьшее из
двух чисел в ноль
#include
<iostream>
using
namespace std;
int
main()
{
void
zeroSmaller(int&,
int&);
int
a = 4, b = 7, c = 11, d = 9;
zeroSmaller(a,
b);
zeroSmaller(c,
d);
cout
<< "\na
="
<< a << "
b ="
<< b
<<
"
c ="
<< c << "
d ="
<< d;
return
0;
}
//--------------------------------------------------
//
zeroSmaller()
//
устанавливает наименьшее из двух чисел
в ноль
void
zeroSmaller(int&first,
int&second)
{
if(first
< second)
first
= 0;
else
second
= 0;
}
4.
Верное решение:
//
ex5_4.cpp
//
функция возвращает наибольшее из двух
значений расстояний
#include
<iostream>
using
namespace std;
///////////////////////////////////////////////////////////
struct
Distance //
Английские
расстояния
{
int
feet;
float
inches;
};
///////////////////////////////////////////////////////////
Distance
bigengl(Distance, Distance);//
объявления
void
engldisp(Distance);
int
main()
{
Distance
d1, d2, d3; //
определение трех расстояний
//
получить расстояние d1 от пользователя
cout
<< "\nВведите
число футов:";cin
>>
d1.feet;
cout
<< "Введите
число дюймов:";cin
>>
d1.inches;
//
получить расстояние d2 от пользователя
cout
<< "\nВведите
число футов:";cin
>>
d2.feet;
cout
<< "Введите
число дюймов:";cin
>>
d2.inches;
d3
= bigengl(d1, d2); //
d3 больше, чем d1 и d2
//
вывести все значения
cout
<< "\nd1
=";
engldisp(d1);
cout
<< "\nd2
=";
engldisp(d2);
cout
<< "\nнаибольшее
- ";
engldisp(d3);cout
<< endl;
return
0;
}
//---------------------------------------------------------
//
bigengl()
//
сравнивает две структуры типа Distance,
возвращает
//
наибольшую
Distance
bigengl(Distance dd1, Distance dd2)
{
if(dd1.feet
> dd2.feet) //
если число футов различается,
return
dd1; //
вернуть то, которое больше
if(dd1.feet
< dd2.feet)
return
dd2;
if(dd1.inches
> dd2.inches)//
если
число
дюймов
//
различается,
