- •Р. Лафоре
- •Глава 1. Общие сведения 32
- •Глава 3. Циклы и ветвления 92
- •Глава 4. Структуры 142
- •Глава 5. Функции 168
- •Глава 6. Объекты и классы 217
- •Глава 7. Массивы и строки 261
- •Глава 8. Перегрузка операций 312
- •Глава 10. Указатели 411
- •Глава 9. Наследование 361
- •Глава 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
б,
в.
ios.
Правильный
ответ:
ifstream,
ofstream
и
fstream
Правильный
ответ:
ofstream
salefile("SALES.JUN
");
Истинно.
Правильный
ответ:
if(foobar)
г.
Правильный
ответ:
fileOut.put(ch);(где
ch -
символ)
в.
Правильный
ответ:
ifile.read((char*)buff.sizeof(buff));
а,
б,
r.
Расположение
байта, который будет читаться или
записываться следующим.
///////////////////////////////////////////////////////////
int
main()
{
const
int
ASIZE = 10; //
размер массива
Array
arr1(ASIZE); //
создать массив
for(int
j = 0; j < ASIZE; j++) //
заполнить его
arr1[j]
= j*j;
//
квадратами чисел
Array
arr2(arr1);
//
использовать конструктор
//
копирования
cout
<< "\narr2:";
for(j
= 0; j
< ASIZE;
j++)//
проверка работы с arr2
cout
<< arr2[j]
<< "
";
Array
arr3,
arr4;
//
создать два пустых массива
arr4
= arr3
= arr1;
//
использовать операцию
//
присваивания
cout
<< "\narr3:";
for(j
= 0; j
< ASIZE;
j++)//
проверка нормальной работы с
//
arr3
cout
<< arr3[j] << "
";
cout
<< "\narr4:";
for(j
= 0; j
< ASIZE;
j++)//
проверка работы с arr4
cout
<< arr4[j] << "
";
cout
<< endl;
return
0;
}
Глава 12 Ответы на вопросы
Ложно;
файловый указатель может быть синонимом
текущей позиции.
Правильный
ответ:
f1.seekg(-13,
ios::cur);
б.
б,
в.
skipws
приводит
к тому, что символы-разделители
игнорируются при вво-
де, поэтому
cin
не
воспринимает окончание ввода.
Правильный
ответ:
int
main(int
argc, char
*argv[])
PRN,
LPT1.
Правильный
ответ:
istream&operator>>(istream&.Sample&)
Решения
упражнений
1.
Верное решение:
//
ex12_1.cpp
//
записывает массив
#include
<iostream>
#include
<fstream>
//
для файловых потоков
using
namespace std;
///////////////////////////////////////////////////////////
class
Distance //
класс
английских
расстояний
{
private:
int
feet;
float
inches;
public:
Distance():
feet(0), inches(0.0)//
конструктор
без
аргументов
{
}
//
конструктор
с
двумя
аргументами
Distance(int
ft, float
in):feet(ft), inches(in)
{
}
void
getdist() //
получить расстояние от пользователя
{
cout
<< "\nВведите
футы:";cin
>>
feet;
cout
<< "Введите
дюймы:";cin
>>
inches;
}
void
showdist() //
вывести
расстояние
{
cout
<< feet << "\'-"
<<
inches <<
'\"';
}
};
///////////////////////////////////////////////////////////
int
main()
{
char
ch;
Distance
dist; //
создать
объект
Distance
fstream
file; //
создать входной/выходной файл
//
открыть его для добавления
file.open("DIST.DAT
",
ios::binary
| ios::app
|
ios::out
| ios::in);
do
//
данные от пользователя в файл
{
cout
<< "\nРасстояние
";
dist.getdist();//
получить расстояние
//
записать
в
файл
file.write((char*)&dist,
sizeof(dist));
cout
<< "Продолжать
(y/n)?";
cin
>>
ch;
}
while(ch
== 'y');
//
выйти по 'n'
file.seekg(0);
//
установить указатель на начало
//
файла
//
прочитать первое значение
file.read((char*)&dist,
sizeof(dist));
int
count = 0;
while(!file.eof())//
выход
по
EOF
{
cout
<< "\nРасстояние
"
<< ++count << ":";//
вывести
//
расстояние
dist.showdist();
file.read((char*)&dist,
sizeof(dist));
//
считать
еще
//
расстояние
}
cout
<< endl;
return
0;
}
Верное
решение:
//
ex12_2.cpp
//
имитация команды COPY
#include
<fstream>
//
для файловых функций
#include
<iostream>
using
namespace std;
#include
<process.h>
//
для exit()
int
main(int
argc, char*argv[])
{
if(argc
!= 3)
{
cerr
<< "\nФормат:ocopy
srcfile destfile ";exit(-1);
}
char
ch;
//
символ для считывания
ifstream
infile;
//
создать входной файл
infile.open(argv[1]);
//
открыть файл
if(!infile)
//
проверка на ошибки
{
cerr
<< "\nНевозможно
открытие "
<< argv[1];exit(-1);
}
ofstream
outfile;
//
создать выходной файл
outfile.open(argv[2]);
//
открыть его
if(!outfile)
//
проверка на ошибки
{
cerr
<< "\nНевозможно
открытие "
<< argv[2];exit(-1);
}
while(infile)
//
до EOF
{
infile.get(ch);
//
считать символ
outfile.put(ch);
//
записать символ
}
return
0;
}
Верное
решение:
//
ex12_3.cpp
//
выводит размер файла
#include
<fstream>
//
для файловых функций
