7. Напишите функцию бинарного поиска для класса vector
(без использования стандартного алгоритма). Выберите любой интерфейс, какой захотите. Протестируйте его. Насколько вы уверены, что ваша функция бинарного поиска работает правильно? Напишите функцию бинарного поиска для контейнера list
. Протестируйте ее. Насколько похожи эти две функции бинарного поиска? Как вы думаете, были бы они настолько похожи, если бы вам не было ничего известно о библиотеке STL?
8. Вернитесь к примеру, связанному с подсчетом частоты слов из раздела 21.6.1, и модифицируйте его, чтобы слова выводились в порядке следования частот, а не в лексикографическом порядке. Например, на экран должна выводиться строка 3: C++
, а не C++: 3
.
9. Определите класс Order
(заказ), члены которого содержат имя клиента, его адрес, дату рождения и контейнер vector
. Класс Purchase
должен содержать поля name
, unit_price
и count
, характеризующие товар. Определите механизм считывания из файла и записи в файл объектов класса Order
. Определите механизм для вывода на экран объектов класса Order
. Создайте файл, содержащий по крайней мере десять объектов класса Order
, считайте его в контейнер vector
, отсортируйте по имени (клиента) и запишите обратно в файл. Создайте другой файл, содержащий по крайней мере десять объектов класса Order
, примерно треть из которых хранится в первом файле, считайте их в контейнер list
, отсортируйте по адресам (клиента) и запишите обратно в файл. Объедините два файла в третий файл, используя функцию std::merge()
.
10. Вычислите общее количество заказов в двух файлах из предыдущего упражнения. Значение отдельного объекта класса Purchase
(разумеется) равно unitprice*count
.
11. Разработайте графический пользовательский интерфейс для ввода заказов из файла.
12. Разработайте графический пользовательский интерфейс для запроса файла заказов; например, “Найти все заказы от Joe
,” “определить общую стоимость заказов в файле Hardware
” или “перечислить все заказы из файла Clothing
.” Подсказка: сначала разработайте обычный интерфейс и лишь потом на его основе начинайте разрабатывать графический.
13. Напишите программу, “очищающую” текстовый файл для использования в программе, обрабатывающей запросы на поиск слов; иначе говоря, замените знаки пунктуации пробелами, переведите слова в нижний регистр, замените выражения
14. Напишите программу (используя результат предыдущего упражнения), отвечающую на следующие вопросы и выполняющую следующие задания: “Сколько раз слово
15. Разработайте графический пользовательский интерфейс из предыдущего упражнения.
Послесловие
Часть IV
Дополнительные темы
Глава 22
Идеалы и история
Когда кто-то говорит: “Мне нужен такой язык
программирования, которому достаточно
просто сказать, его я хочу”,
дайте ему леденец.
Алан Перлис (Alan Perlis)