Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Решение задач на современном C++. Станьте опытным программистом, решая практические задачи

Покупка
Новинка
Артикул: 882329.01.99
Доступ онлайн
590 ₽
В корзину
Эта книга — сборник практических задач по языку С++17: от математических и вычислительных до архитектурных, построенных на базе шаблонов проектирования. Здесь собрано 100 задач, которые помогут вам применить на практике разнообразные возможности C++ и его стандартной библиотеки, а также опробовать множество сторонних, кроссплатформенных библиотек. Решения представлены в виде исходного кода, пояснений и рекомендаций к нему. Книга рекомендована сообществом разработчиков С++ России и Беларуси. Издание будет полезно студентам технических вузов, а также начинающим и опытным разработчикам.
24
40
92
133
196
291
Бансила, М. Решение задач на современном C++. Станьте опытным программистом, решая практические задачи : практическое руководство / М. Бансила ; пер. с англ. А. Н. Киселева. - Москва : ДМК Пресс, 2019. - 303 с. - ISBN 978-5-97060-666-7. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2259729 (дата обращения: 08.10.2026). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Мариус Бансила
Решение задач 
на современном C++
Станьте опытным программистом,  
решая практические задачи


The Modern C++ 
Challenge
Become an expert programmer by solving 
real-world problems
Marius Bancila
BIRMINGHAM – MUMBAI


Решение задач 
на современном C++
Станьте опытным программистом, решая 
практические задачи
Мариус Бансила
 Москва, 2019


УДК    004.4
ББК    32.973.202-018.2
Б23
Б23     Мариус Бансила
Решение задач на современном C++ / пер. с англ. А. Н. Киселева – М.: ДМК Пресс, 
2019. – 302 с.: ил.
             ISBN 978-5-97060-666-7
Эта книга – сборник практических задач по языку С++17: от математических 
и вычислительных до архитектурных, построенных на базе шаблонов проектирования. Здесь собрано 100 задач, которые помогут вам применить на практике 
разнообразные возможности C++ и его стандартной библиотеки, а также опробовать множество сторонних, кроссплатформенных библиотек. Решения представлены в виде исходного кода, пояснений и рекомендаций к нему.
Книга рекомендована сообществом разработчиков С++ России и Беларуси.
Издание будет полезно студентам технических вузов, а также начинающим и 
опытным разработчикам.
	
	
	
	
	
	
	
        УДК   004.4
	
	
	
	
	
	
	
        ББК   32.973.202-018.2
Все права защищены. Любая часть этой книги не может быть воспроизведена в 
какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать 
абсолютную точность и правильность приводимых сведений. В связи с этим издательство 
не несет ответственности за возможные ошибки, связанные с использованием книги.
ISBN 978-1-78899-386-9 (англ.)                        Copyright © 2018 Packt Publishing.
ISBN 978-5-97060-666-7 (рус.)                          © Оформление, перевод на русский язык, издание, 
	
                    ДМК Пресс, 2019


Оглавление
Вступительное слово от сообщества разработчиков России и Беларуси.....12
Об авторе.................................................................................................................13
О рецензентах.........................................................................................................14
О чем рассказывается в книге..............................................................................15
Вступление............................................................................................................... 17
Кому адресована эта книга.........................................................................................................18
Что необходимо, чтобы извлечь максимум пользы из книги.......................................18
Скачивание исходного кода примеров.................................................................................19
Сборка примеров............................................................................................................................19
Как сгенерировать проекты для Visual Studio 2017..........................................................20
Как сгенерировать проекты для Xcode....................................................................................20
Соглашения........................................................................................................................................21
Отзывы и пожелания.....................................................................................................................22
Список опечаток..............................................................................................................................23
Нарушение авторских прав........................................................................................................23
Глава 1. Математические задачи.........................................................................24
Задачи..................................................................................................................................................24
1. Сумма натуральных чисел, кратных 3 и 5..........................................................................24
2. Наибольший общий делитель.................................................................................................24
3. Наименьшее общее кратное...................................................................................................24
4. Наибольшее простое число меньше заданного..............................................................24
5. Простые числа, отличающиеся на шесть............................................................................24
6. Избыточные числа.......................................................................................................................24
7. Дружественные числа.................................................................................................................25
8. Числа Армстронга........................................................................................................................25
9. Простые множители числа.......................................................................................................25
10. Код Грея.........................................................................................................................................25
11. Преобразование десятичных чисел в римские............................................................25
12. Наибольшая последовательность Коллатца...................................................................25
13. Вычисление значения числа π.............................................................................................25
14. Проверка действительности номеров ISBN...................................................................25
Решения..............................................................................................................................................25
1. Сумма натуральных чисел, кратных 3 и 5..........................................................................25
2. Наибольший общий делитель.................................................................................................26
3. Наименьшее общее кратное...................................................................................................27


Оглавление
4. Наибольшее простое число меньше заданного..............................................................27
5. Простые числа, отличающиеся на шесть............................................................................28
6. Избыточные числа.......................................................................................................................29
7. Дружественные числа.................................................................................................................30
8. Числа Армстронга........................................................................................................................31
9. Простые множители числа.......................................................................................................32
10. Код Грея.........................................................................................................................................33
11. Преобразование десятичных чисел в римские............................................................34
12. Наибольшая последовательность Коллатца...................................................................36
13. Вычисление значения числа π.............................................................................................37
14. Проверка действительности номеров ISBN...................................................................38
Глава 2. Особенности языка..................................................................................40
Задачи..................................................................................................................................................40
15. Тип данных IPv4.........................................................................................................................40
16. Перечисление адресов IPv4 в заданном диапазоне..................................................40
17. 2-мерный массив с поддержкой базовых операций..................................................40
18. Функция выбора минимального значения с переменным числом  
аргументов....................................................................................................................................40
19. Добавление диапазона значений в контейнер.............................................................40
20. Проверка наличия в контейнере любого, всех и ни одного из указанных  
значений........................................................................................................................................41
21. Обертка для системных дескрипторов.............................................................................41
22. Литералы разных температурных шкал...........................................................................41
Решения..............................................................................................................................................41
15. Тип данных IPv4.........................................................................................................................41
16. Перечисление адресов IPv4 в заданном диапазоне..................................................43
17. 2-мерный массив с поддержкой базовых операций..................................................45
18. Функция выбора минимального значения с переменным числом  
аргументов....................................................................................................................................47
19. Добавление диапазона значений в контейнер.............................................................48
20. Проверка наличия в контейнере любого, всех и ни одного из указанных  
значений........................................................................................................................................49
21. Обертка для системных дескрипторов.............................................................................50
22. Литералы разных температурных шкал...........................................................................54
Глава 3. Строки и регулярные выражения..........................................................59
Задачи..................................................................................................................................................59
23. Преобразование чисел в строки.........................................................................................59
24. Преобразование строк в числа............................................................................................59
25. Преобразование в верхний регистр первых букв слов............................................59
26. Объединение строк через разделитель............................................................................59
27. Разбиение строк на лексемы по разделителям из списка........................................60
28. Наибольшая подстрока-палиндром...................................................................................60
29. Проверка номерного знака...................................................................................................60
30. Извлечение частей URL...........................................................................................................60


Оглавление    7
31. Преобразование дат в строках............................................................................................60
Решения..............................................................................................................................................60
23. Преобразование чисел в строки.........................................................................................60
24. Преобразование строк в числа............................................................................................61
25. Преобразование в верхний регистр первых букв слов............................................63
26. Объединение строк через разделитель............................................................................64
27. Разбиение строк на лексемы по разделителям из списка........................................65
28. Наибольшая подстрока-палиндром...................................................................................66
29. Проверка номерного знака...................................................................................................68
30. Извлечение частей URL...........................................................................................................69
31. Преобразование дат в строках............................................................................................71
Глава 4. Потоки данных и файловые системы..................................................72
Задачи..................................................................................................................................................72
32. Треугольник Паскаля................................................................................................................72
33. Табличный вывод списка процессов.................................................................................72
34. Удаление пустых строк из текстового файла..................................................................72
35. Определение размера каталога..........................................................................................72
36. Удаление файлов старше заданной даты........................................................................73
37. Поиск файлов в каталоге, соответствующих регулярному выражению..............73
38. Временные файлы журналов................................................................................................73
Решения..............................................................................................................................................73
32. Треугольник Паскаля................................................................................................................73
33. Табличный вывод списка процессов.................................................................................74
34. Удаление пустых строк из текстового файла..................................................................76
35. Определение размера каталога..........................................................................................77
36. Удаление файлов старше заданной даты........................................................................78
37. Поиск файлов в каталоге, соответствующих регулярному выражению..............80
38. Временные файлы журналов................................................................................................81
Глава 5. Дата и время.............................................................................................83
Задачи..................................................................................................................................................83
39. Измерение времени выполнения функции....................................................................83
40. Число дней между двумя датами........................................................................................83
41. День недели.................................................................................................................................83
42. День и неделя года....................................................................................................................83
43. Время встречи для нескольких часовых поясов..........................................................83
44. Календарь на месяц..................................................................................................................83
Решения..............................................................................................................................................84
39. Измерение времени выполнения функции....................................................................84
40. Число дней между двумя датами........................................................................................85
41. День недели.................................................................................................................................86
42. День и неделя года....................................................................................................................87
43. Время встречи для нескольких часовых поясов..........................................................88
44. Календарь на месяц..................................................................................................................90


Оглавление
Глава 6. Алгоритмы и структуры данных............................................................92
Задачи..................................................................................................................................................92
45. Приоритетная очередь............................................................................................................92
46. Циклический буфер..................................................................................................................92
47. Двойной буфер...........................................................................................................................93
48. Самый часто встречающийся элемент в диапазоне....................................................93
49. Текстовая гистограмма.............................................................................................................93
50. Фильтрация списка телефонных номеров......................................................................93
51. Преобразование списка телефонных номеров............................................................93
52. Генерация всех перестановок символов в строке.......................................................94
53. Средний рейтинг фильмов.....................................................................................................94
54. Алгоритм объединения в пары.............................................................................................94
55. Алгоритм «сшивания»..............................................................................................................94
56. Алгоритм выбора.......................................................................................................................94
57. Алгоритм сортировки................................................................................................................95
58. Кратчайший путь между узлами..........................................................................................95
59. Программа Weasel.....................................................................................................................96
60. Игра «Жизнь»..............................................................................................................................96
Решения..............................................................................................................................................97
45. Приоритетная очередь............................................................................................................97
46. Циклический буфер..................................................................................................................99
47. Двойной буфер........................................................................................................................103
48. Самый часто встречающийся элемент в диапазоне.................................................105
49. Текстовая гистограмма.......................................................................................................... 107
50. Фильтрация списка телефонных номеров...................................................................108
51. Преобразование списка телефонных номеров.........................................................109
52. Генерация всех перестановок символов в строке....................................................111
53. Средний рейтинг фильмов..................................................................................................113
54. Алгоритм объединения в пары..........................................................................................114
55. Алгоритм «сшивания»...........................................................................................................115
56. Алгоритм выбора.................................................................................................................... 117
57. Алгоритм сортировки............................................................................................................. 117
58. Кратчайший путь между узлами.......................................................................................121
59. Программа Weasel..................................................................................................................125
60. Игра «Жизнь»...........................................................................................................................128
Глава 7. Конкуренция...........................................................................................133
Задачи...............................................................................................................................................133
61. Алгоритм параллельного преобразования..................................................................133
62. Параллельные алгоритмы поиска максимального и минимального  
значений с использованием потоков.............................................................................133
63. Параллельные алгоритмы поиска максимального и минимального  
значений с использованием асинхронных функций...............................................133
64. Параллельный алгоритм сортировки.............................................................................133
65. Потокобезопасное журналирование в консоль.........................................................134
66. Система обслуживания клиентов.....................................................................................134


Оглавление    9
Решения...........................................................................................................................................134
61. Алгоритм параллельного преобразования..................................................................134
62. Параллельные алгоритмы поиска максимального и минимального  
значений с использованием потоков.............................................................................136
63. Параллельные алгоритмы поиска максимального и минимального  
значений с использованием асинхронных функций...............................................138
64. Параллельный алгоритм сортировки.............................................................................140
65. Потокобезопасное журналирование в консоль.........................................................142
66. Система обслуживания клиентов.....................................................................................143
Глава 8. Шаблоны проектирования...................................................................148
67. Проверка пароля.....................................................................................................................148
68. Генерация случайных паролей..........................................................................................148
69. Генерация номеров социального страхования..........................................................148
70. Система одобрений...............................................................................................................149
71. Контейнер с наблюдателями..............................................................................................149
72. Вычисление стоимости заказа с учетом скидок........................................................149
Решения...........................................................................................................................................150
67. Проверка пароля.....................................................................................................................150
68. Генерация случайных паролей..........................................................................................154
69. Генерация номеров социального страхования..........................................................158
70. Система одобрений...............................................................................................................162
71. Контейнер с наблюдателями..............................................................................................166
72. Вычисление стоимости заказа с учетом скидок........................................................171
Глава 9. Сериализация данных...........................................................................177
Задачи............................................................................................................................................... 177
73. Сериализация и десериализация данных в формате XML.................................... 177
74. Выборка данных из XML с помощью XPath................................................................. 177
75. Сериализация данных в формат JSON...........................................................................178
76. Десериализация данных из формата JSON.................................................................178
77. Вывод списка фильмов в файл PDF................................................................................178
78. Создание документа PDF из коллекции изображений...........................................179
Решения...........................................................................................................................................179
73. Сериализация и десериализация данных в формате XML....................................179
74. Выборка данных из XML с помощью XPath.................................................................183
75. Сериализация данных в формат JSON...........................................................................185
76. Десериализация данных из формата JSON................................................................. 187
77. Вывод списка фильмов в файл PDF................................................................................189
78. Создание документа PDF из коллекции изображений...........................................193
Глава 10. Архивы, изображения и базы данных.............................................196
Задачи...............................................................................................................................................196
79. Поиск файлов в архиве ZIP................................................................................................196
80. Упаковка и извлечение файлов из архива ZIP...........................................................196
81. Упаковка и извлечение файлов из архива ZIP с защитой паролем..................196


Оглавление
82. Создание файла PNG с изображением национального флага............................196
83. Создание изображения PNG с контрольным текстом.............................................. 197
84. Генератор штрихкодов EAN-13 ........................................................................................ 197
85. Чтение информации о фильмах из базы данных SQLite.......................................198
86. Добавление информации о фильмах в базу данных SQLite................................198
87. Обработка изображений для фильмов в базе данных SQLite.............................198
Решения...........................................................................................................................................199
79. Поиск файлов в архиве ZIP................................................................................................199
80. Упаковка и извлечение файлов из архива ZIP...........................................................201
81. Упаковка и извлечение файлов из архива ZIP с защитой паролем..................204
82. Создание файла PNG с изображением национального флага............................ 207
83. Создание изображения PNG с контрольным текстом..............................................208
84. Генератор штрихкодов EAN-13 ........................................................................................211
85. Чтение информации о фильмах из базы данных SQLite....................................... 217
86. Добавление информации о фильмах в базу данных SQLite................................223
87. Обработка изображений для фильмов в базе данных SQLite............................. 227
Глава 11. Криптография......................................................................................236
Задачи...............................................................................................................................................236
88. Шифр Цезаря............................................................................................................................236
89. Шифр Виженера......................................................................................................................236
90. Кодирование и декодирование Base64........................................................................236
91. Проверка учетных данных пользователя.....................................................................236
92. Вычисление хеш-суммы файла.........................................................................................236
93. Шифрование и расшифровывание файлов................................................................. 237
94. Подписывание файлов......................................................................................................... 237
Решения........................................................................................................................................... 237
88. Шифр Цезаря............................................................................................................................ 237
89. Шифр Виженера......................................................................................................................239
90. Кодирование и декодирование Base64........................................................................241
91. Проверка учетных данных пользователя.....................................................................246
92. Вычисление хеш-суммы файла.........................................................................................250
93. Шифрование и расшифровывание файлов.................................................................252
94. Подписывание файлов.........................................................................................................254
Глава 12. Сети и службы......................................................................................258
Задачи...............................................................................................................................................258
95. Поиск IP-адреса хоста..........................................................................................................258
96. Клиент-серверная игра Fizz-Buzz....................................................................................258
97. Обменный курс биткойна....................................................................................................258
98. Получение почты по протоколу IMAP............................................................................258
99. Перевод текста на любой язык.........................................................................................259
100. Определение лиц на изображениях............................................................................259
Решения...........................................................................................................................................259
95. Поиск IP-адреса хоста..........................................................................................................259
96. Клиент-серверная игра Fizz-Buzz....................................................................................261


Доступ онлайн
590 ₽
В корзину