Среда программирования VISUAL C++
Автор: Никита Томашевский • Апрель 1, 2023 • Лабораторная работа • 3,044 Слов (13 Страниц) • 202 Просмотры
Лабораторная работа №23.
Среда программирования VISUAL C++.
Классы и объекты. Инкапсуляция, конструкторы.
1. Постановка задачи (общая):
1. Определить класс-контейнер.
2. Реализовать конструкторы, деструктор, операции ввода-вывода, операцию присваивания.
3. Перегрузить операции, указанные в варианте.
4. Реализовать класс-итератор. Реализовать с его помощью операции последовательного доступа.
5. Написать тестирующую программу, иллюстрирующую выполнение операций.
Постановка задачи (11 вариант):
Написать класс-контейнер СПИСОК с ключевыми значениями типа int. Реализовать операции: [] – доступа по индексу; () – определение размера вектора; + число – добавляет константу ко всем элементам вектора; ++ - переход к следующему элементу ( с помощью класса-итератора).
2. Анализ задачи:
• Определения функций для реализации поставленных задач;
Для реализации поставленных задач определен класс-конйтейнер, лежащий в .h файле, функция main() и два макроса: IF_NOT_NULLPTR(text) и IF _NULLPTR(text). Работа обоих макросов похожа и специализирована для функции main(): если указатель на класс контейнер в main() не нулевой (нулевой), то выполнение text, иначе вывод сообщения ошибки и возвращение в меню.
• Определение функции main();
Функция main() состоит из:
1) Объявление переменных: нулевой указатель на класс-контейнер, служебная переменная типа int64_t для считывания значений с клавиатуры (преимущественно используется для хранения количества элементов или индекса отдельного элемента) и промежуточная переменная типа int32_t, в которую вводится значение, чтобы положить его в список.
2) Бесконечный цикл:
a. Печать текстового меню (всего 9 возможных вариантов выбора);
b. Switch-case:
‘1’: Если указатель нулевой, то создание и ввод нового списка:
Пока служебная переменная меньше или равна нулю, у пользователя спрашивается неотрицательное число. После этого создается список длиной в введенное в служебную переменную значение. После этого путем использования оператора ввода в класс считывается данные с клавиатуры.
‘2’: Если указатель не нулевой, то список удаляется; указателю присваивается nullptr.
‘3’: Если указатель не нулевой, то запрашивается ввод числа формата int32_t в промежуточную переменную, значение в которой затем методом push_back становится новым элементом списка.
‘4’: Если указатель нулевой, то путем использования операции вывода на экран выводится весь список.
‘5’: Если указатель не нулевой, то весь список выводится путем использования итератора класса-контейнера: переменной цикла приравнивается итератор на первый элемент, и пока он не равен итератору на элемент после последнего, его значение выводится на экран, а он сам инкрементируется.
‘6’: Если указатель не нулевой, то пока служебная переменная меньше нуля и больше длины списка (длина списка становится известна благодаря использованию перегруженного оператора круглых скобок), программа просит пользователя ввести значение индекса в служебную переменную. После этого на экран выводится значение элемента списка под индексом путем использования оператора квадратных скобочек и пользователя просят ввести новое значение в данный элемент.
‘7’: Если указатель не нулевой, то перегруженный оператор круглых скобочек возвращает длину списка.
‘8’: В служебную переменную с клавиатуры вводится определенное значение, после чего оператор сложения прибавляет к копии списка, созданной при помощи определенного в классе конструктора копирования, после чего исходному списку присваивается данная копия.
‘9’: Нормальное
...