- •Предисловие
- •Глава 1. Основные понятия
- •1.1. Элементы языка программирования
- •1.2. Процесс создания программы
- •1.3. Первая программа
- •1.4. Состав программы
- •Глава 2. Средства разработки на C++
- •2.1. Системы Turbo C++ 3.0/Borland C++ 3.1
- •2.2. Система C++ Builder
- •Глава 3. Работа с числовыми данными
- •3.1. Целые типы
- •3.2. Числа с плавающей точкой
- •3.3. Ввод и вывод чисел
- •3.4. Логический тип и логические операции
- •3.5. Математические функции
- •Глава 4. Операторы. Ключевые слова
- •4.1. Операторы
- •4.2. Приоритеты операторов
- •4.3. Ключевые слова
- •4.4. Структура программы
- •4.5. Константы
- •Задачи - . Простейшие вычисления
- •Глава 5. Управление и циклы
- •5.1. Условный оператор
- •5.2. Операторы цикла
- •5.3. Переключатель
- •5.4. Операторы break и continue
- •Задачи -. Выбор и циклы
- •Глава 6. Массивы
- •6.1. Одномерные массивы
- •6.2. Двумерные массивы
- •Задачи -. Одно- и двумерные массивы
- •Глава 7. Функции
- •7.1. Определение функции
- •7.2. Формальные параметры и фактические аргументы
- •7.3. Автоматические и статические переменные
- •7.4. Прототипы функций
- •7.5. Массивы как аргументы функций
- •7.6. Внешние переменные
- •7.7. Рекурсия
- •7.8. Перегруженные имена функций
- •7.9. Аргументы функций по умолчанию
- •Задачи -. Функции
- •Глава 8. Символы и строки
- •8.1. Символы
- •8.2. Строки символов
- •Задачи -. Символы и строки
- •Глава 9. Препроцессор
- •9.1. Директивы препроцессора
- •9.2. Макросы
- •Задачи -. Макросы
- •Глава 10. Указатели и ссылки
- •10.1. Указатели и адреса
- •10.2. Указатели и массивы
- •10.3. Адресная арифметика
- •10.4. Символьные указатели
- •10.5. Массивы указателей
- •10.6. Указатели на функции
- •10.7. Ссылки
- •10.8. Операторы new и delete
- •Задачи -. Указатели и ссылки
- •Глава 11. О файлах и командной строке
- •11.1. Знакомство с файлами
- •11.2. Командная строка
- •11.3. Перенаправление стандартного ввода и вывода на файл
- •11.4. Аргументы командной строки
- •Задачи -. Файлы и командная строка
- •Глава 12. Работа с экраном дисплея
- •12.1. Текстовый режим
- •12.2. Графический режим
- •Задачи -. Работа с экраном
- •Глава 13. Внутреннее представление чисел
- •13.1. Двоичная система счисления
- •13.2. Беззнаковые целые
- •13.3. Двоичный дополнительный код
- •13.4. Двоичный код с избытком
- •13.5. Побитовые операторы
- •13.6. Дробные числа в двоичной системе
- •13.7. Внутреннее представление плавающих типов
- •13.8. Преобразование типов
- •Задачи -. Побитовые операторы
- •Глава 14. Структуры, перечисления, объединения
- •14.1. Объявление структур
- •14.2. Структуры и функции
- •14.3. Указатели на структуры
- •14.4. Массивы структур
- •14.5. Перечисления
- •14.6. Объединения
- •14.7. Битовые поля
- •14.8. О бинарных файлах
- •Задачи -. Структуры
- •Глава 15. Классы
- •15.1. Структуры в C++. Инкапсуляция
- •15.2. Встроенные функции
- •15.3. Классы. Скрытие данных
- •15.4. Конструкторы
- •15.5. Статические члены класса
- •15.6. Друзья класса
- •15.7. Копирование объектов класса
- •15.8. Управление доступом
- •15.9. Ссылка на себя
- •15.10. Деструкторы
- •Задачи -. Работа с классами
- •Глава 16. Программы из нескольких файлов
- •16.1. Работа с проектами
- •16.2. Область действия имен
- •16.3. Заголовочные файлы
- •16.4. Пространства имен
- •Задачи -. Работа со стеком
- •Глава 17. Перегрузка операторов
- •17.1. Правила перегрузки операторов
- •Задачи -. Перегрузка операторов
- •Глава 18. Конструктор копирования и оператор присваивания
- •18.1. Проблемы при копировании
- •Задачи -. Конструктор копирования
- •Глава 19. Ввод и вывод
- •19.1. Вывод
- •19.2. Ввод
- •19.3. Ввод и вывод определяемых пользователем типов
- •19.4. Работа с файлами
- •Глава 20. Взаимоотношения классов
- •20.1. Объекты как члены класса
- •20.2. Конструкторы встроенных типов
- •20.3. Наследование
- •20.4. Виртуальные функции
- •20.5. Абстрактные классы
- •20.6. Совместимость типов
- •20.7. Множественное наследование
- •Задачи -. Наследование классов
- •Глава 21. Шаблоны, исключения
- •21.1. Шаблоны
- •21.2. Шаблоны функций
- •21.3. Классы и шаблоны
- •21.4. Обработка исключений
- •21.5. Стандартная библиотека шаблонов
- •Литература
- •Предметный указатель
Взаимоотношения классов 307
1 2
3 6 Правая часть системы 1 2
Главный элемент = 0. Матрица вырожденная
Это результат работы нашего обработчика исключений. Системные сообщения об ошибках появляются только при запуске программы из среды разработки. При запуске программы независимо от среды будут выполняться только собственные обработчики исключений программы.
Задачи -. Наследование классов
203.Отсортируйте людей по убыванию даты рождения (от более поздней даты к более ранней).
204.Напишите функцию сравнения людей по фамилиям. С помощью этой функции отсортируйте группу людей в алфавитном порядке их фамилий.
205.В функции Add класса Persons, программы 58, предусмотрите проверку, чтобы дважды в группу не попали лица с одинаковыми именами.
206.Добавьте в класс Date функцию int DayOfWeek(), возвращающую номер дня недели: 1 – понедельник, 2 – вторник,… Напишите функцию сравнения людей по дням недели их рождения и с
еепомощью отсортируйте людей из группы по дням недели.
207.Сделайте класс Plgn (многоугольники) из программы 49 производным от класса Point (точка). Базовую точку считайте центром масс многоугольника. Предусмотрите конструктор, создающий многоугольник со случайными координатами вершин, отстоящими от базовой точки не более чем на заданную величину R, которую можно сделать параметром конструктора. Напишите также конструктор, который создает многоугольник по двум заданным массивам координат. В нем следует скорректировать заданные координаты вершин так, чтобы базовая точка действительно оказалась центром масс. Как видно из рис.70, если B – базовая точка, то для этого она совпала с центром масс C, координаты всех вершин следует уменьшить соответственно на
x и Δy.
208.Перепишите программу 55, выделив в отдельный класс, например, Vct математические операции над компонентами векторов, и сделав класс Bivect производным от Vct.
209.Добавьте в класс Matrix функцию преобразования матрицы к треугольному виду и функцию вычисления определителя.
30820
210.Реализуйте решение системы уравнений не через обратную матрицу системы, а непосредственно методом исключения неизвестных Гаусса, то есть на прямом ходе преобразуйте матрицу к треугольному виду, а на обратном ходе получайте значения неизвестных.
211.Предложенная реализация класса матриц в виде совокупности векторов-столбцов не самая эффективная, так как велики накладные расходы на вызовы конструкторов и деструкторов класса векторов при работе с матрицами. Реализуйте класс матриц, используя ее представление в виде одномерного массива double* a; в котором подряд в памяти расположены строки матрицы.
212.В классе Persons, программа 60, перегрузите оператор доступа к элементу массива личных данных Pers& operator[](char *name) по имени человека name. Используйте этот оператор для получения справок о дате рождения людей по их фамилиям.