Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

2.5. Упражнения 101

C-2.6 Напишите C ++ класс, который получен из класса Прогрессии, чтобы произвести

прогрессия, где каждая стоимость - квадратный корень предыдущей стоимости. (Обратите внимание на то, что Вы больше не можете представлять каждую стоимость с целым числом.) Среди Вас должен быть конструктор по умолчанию, который начинает с 65, 536 как первая стоимость и параметрический конструктор, который начинает с указанного (двойного) числа как первая стоимость.

C-2.7 Напишите программу, которая состоит из трех классов, A, B, и C, такой, что B - a

подкласс A и C - подкласс B. Каждый класс должен определить членскую переменную, названную «x» (то есть, у каждого есть его собственная переменная, названная x). Опишите путь к членской функции в C, чтобы получить доступ и установить версию А x к данной стоимости, не изменяясь B или версию К.

C-2.8 Напишите ряд C ++ классы, которые могут моделировать интернет-приложение, где

одна сторона, Элис, периодически создает ряд пакетов, которые она хочет послать Бобу. Интернет-процесс все время проверяет, есть ли у Элис какие-либо пакеты, чтобы послать, и если так, он поставляет им компьютеру Боба, и Боб периодически проверяет, есть ли у его компьютера пакет от Элис, и, если так, он читает и удаляет его.

C-2.9 Напишите C ++ программа, которая может ввести любой полиномиал в алгебраическом стандарте

примечание и продукция первая производная того полиномиала.

Проекты

P-2.1 Напишите C ++ программа, которая может взять положительное целое число, больше, чем 2 как

вход и выписывает количество раз, нужно неоднократно делить это число на 2 прежде, чем получить стоимость меньше чем 2.

P-2.2 Напишите C ++ программа, которая «вносит изменение». Ваша программа должна ввести

два числа, то, которое является денежной заряженной суммой и другой, который является денежной данной суммой. Это должно возвратить число каждого вида счета и монеты, чтобы отдать как изменение для различия между суммами, данными и заряженными. Ценности, назначенные на счета и монеты, могут быть основаны на денежной системе любого правительства. Попытайтесь проектировать свою программу так, чтобы она возвратила наименьшее количество числа счетов и монет как возможное.

P-2.3 Осуществите templated C ++ Вектор класса, который управляет числовым vec-

скалистая вершина. Ваш класс должен быть templated с любым числовым скалярным типом T,

который поддерживает операции + (дополнение),- (вычитание), и * (mul-

tiplication). Кроме того, у типа T должны быть конструкторы Т (0), который

производит совокупный элемент идентичности (как правило, 0) и T (1), который про - дуче мультипликативная идентичность (как правило, 1). Ваш класс должен предоставить конструктору, которому дают размер вектора как аргумент. Это должно обеспечить членские функции (или операторы) для векторного дополнения, вектор под - тяга, умножение скаляра и вектора и векторного продукта точки.

102

P-2.4

P-2.5

P-2.6

P-2.7

Глава 2. Ориентированный на объект Дизайн Пишет Комплекс класса, который осуществляет комплексное число перегрузкой - луг операторы для дополнения, вычитания и умножения. Осуществите три конкретных случая своего Вектора класса с интервалом типов скаляра, дважды, и Комплекс, соответственно. Напишите симулятор как в предыдущем проекте, но добавьте Булеву гендерную область и область силы floating-пункта к каждому объекту Животных. Теперь, если два животных того же самого типа пытаются столкнуться, то они только создают новый случай того типа животного, если они имеют различные полы. Иначе, если два животных того же самого типа и пола пытаются столкнуться, то только тот большей силы выживает. Напишите C ++ программа, у которой есть интерфейс Polygon, у которого есть резюме func-tions, область (), и периметр (). Классы орудия для Треугольника, ответвления Quadri-, Пентагона, Шестиугольника и Восьмиугольника, которые осуществляют это меж - лицо с очевидными значениями для области () и периметр () функции. Также осуществите классы, IsoscelesTriangle, EquilateralTriangle, Rectan-gle и Квадрат, у которых есть соответствующие отношения наследования. Fi-nally, напишите простой пользовательский интерфейс, который позволяет пользователям создавать многоугольники различных типов, вводить их геометрические аспекты, и затем производить их область и периметр. Для дополнительного усилия позвольте пользователям вводить многоугольники спекуляцией - ifying их координаты вершины и быть в состоянии проверить, если два таких многоугольника подобны. Напишите C ++ программа, которая вводит документ и затем производит заговор гистограммы частот каждого характера алфавита, который появляется в том докторе - ument. Напишите C ++ программа, которая вводит список слов, отделенных whitespace и продукцией, сколько раз каждое слово появляется в списке. Вы не должны волноваться об эффективности в этом пункте, однако, поскольку эта тема - что-то, что будет обращено позже в этой книге.

Примечания к главе

Для широкого обзора событий в информатике и разработке, мы отсылаем читателя к Информатике и Техническому Руководству [96]. Для получения дополнительной информации об инциденте Therac-25, пожалуйста, посмотрите статью Левезона и Тернера [63].

Читатель, заинтересованный изучением объектно-ориентированного программирования далее, отнесен в книги Booch [13], Budd [16], и Лисковым и Гаттэгом [68]. Лисков и Гаттэг [68] также обеспечивают хорошее обсуждение абстрактных типов данных, как написал работу обзора Карделли и Вегнера [19] и книжная глава Demurjian [27] в Информатика и Техническое Руководство [96]. Шаблоны описаны в книге Гаммой и др. [35]. Примечание диаграммы наследования класса, которое мы используем, получено из Гаммы и др.

Глава

3

Множества, связанные списки и рекурсия

Содержание

3.1

Используя множества.....................

.

.

104

3.1.1 Хранение записей игры во множестве........

.

..

104

3.1.2 Сортировка множества.................

.

..

109

3.1.3 Двумерные множества и позиционные игры

.

..

111

3.2

Отдельно связанные списки..................

.

.

117

3.2.1 Осуществление отдельно связанного списка.......

.

..

117

3.2.2 Вставка к фронту отдельно связанного списка.

.

..

119

3.2.3 Удаление из фронта отдельно связанного списка

.

..

119

3.2.4 Осуществление универсального отдельно связанного списка...

.

..

121

3.3

Вдвойне связанные списки.................

.

.

123

3.3.1 Вставка во вдвойне связанный список.......

.

..

123

3.3.2 Удаление из вдвойне связанного списка......

.

..

124

3.3.3 C ++ внедрение.............

.

..

125

3.4

Циркулярные связанные списки и аннулирование списка......

.

.

129

3.4.1 Циркулярные связанные списки..............

.

..

129

3.4.2 Изменение связанного списка.............

.

..

133

3.5

Рекурсия.......................

.

.

134

3.5.1 Линейная рекурсия.................

.

..

140

3.5.2 Двойная рекурсия................

.

..

144

3.5.3 Многократная рекурсия...............

.

..

147

3.6

Упражнения.......................

.

.

149