|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.05.2013, 00:36 | #1 |
Пользователь
Регистрация: 25.01.2013
Сообщений: 17
|
Создать класс "строка"(С++)
Помогите,пожалуйста .Вообще не полнимаю что здесь делать
Вот такое задание: Описать базовый класс СТРОКА. Обязательные члены класса: * указатель на char - хранит адрес динамически выделенной памяти для размещения символов строки; * значение типа int - хранит длину строки в байтах. Обязательные методы должны выполнять следующие действия: * конструктор без параметров; * конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); * конструктор, принимающий в качестве параметра символ (char). * конструктор копирования; * деструктор. * чтение символа из заданной позиции; Производный от СТРОКА класс СТРОКА_ИДЕНТИФИКАТОР Строки данного класса строятся по правилам записи идентификаторов в СИ, и могут включать в себя только те символы, которые могут входить в состав Си-идентификаторов. Если исходные данные противоречат правилам записи идентификатора, то создается пустая СТРОКА_ИДЕНТИФИКАТОР. Обязательные методы: * конструктор без параметров; * конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); * конструктор, принимающий в качестве параметра символ (char). * конструктор копирования; * деструктор. * перевод всех символов строки (кроме цифр) в нижний регистр; Переопределить следующие операции: * присваивание (=); * оператор == - проверка на равенство; Производный от СТРОКА класс БИТОВАЯ_СТРОКА. Строки данного класса могут содержать только символы '0' или '1'. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, БИТОВАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как двоичное число. Отрицательные числа хранятся в дополнительном коде. Число считается отрицательным, если крайний левый(знаковый) разряд = 1, при этом разрядность числа может быть любой в пределах ограничений, указанных в файле README.TXT. Таким образом, числа 11101 и 101 являются отрицательными и равными по значению. Обязательные методы: * конструктор без параметров; * конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); * конструктор копирования; * деструктор; * удаление лишних ведущих символов (нулей или единиц в зависимости от знака числа); Переопределить следующие операции (длина строки результата равна длине большей из строк, в случае необходимости, более короткая битовая строка расширяется влево знаковым разрядом) : * присваивание (=); * операция == - проверка на равенство * операция < - проверка на меньше (по значению). Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных членов и методов. Задание: Разработать иерархию классов по следующей схеме: СТРОКА | V | | СТРОКА_ИДЕНТИФИКАТОР БИТОВАЯ_СТРОКА с обязательной поддержкой заданных членов и методов. Написать тестовую программу, которая: * динамически выделяет массив указателей на базовый класс размерностью, заданной в п/п. 1.1. * в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений; * для созданных экземпляров производных классов выполняется проверка всех разработанных методов (в соответствии с вариантом задания), с выводом исходных данных и результатов на дисплей. |
22.05.2013, 00:46 | #2 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
|
|
22.05.2013, 18:06 | #3 |
Пользователь
Регистрация: 25.01.2013
Сообщений: 17
|
Вот:
Код:
* конструктор, принимающий в качестве параметра символ (char). * чтение символа из заданной позиции; вот эти я не сделал |
22.05.2013, 18:27 | #4 | |
Форумчанин
Регистрация: 20.01.2013
Сообщений: 146
|
Цитата:
Код:
|
|
22.05.2013, 18:36 | #5 |
Пользователь
Регистрация: 25.01.2013
Сообщений: 17
|
спасибо=))
|
22.05.2013, 18:39 | #6 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
Что интереснее, Вы: 1) Забыли квалификатор доступа public: - сейчас объект класса нельзя создать, все методы, включая конструкторы, недоступны извне. 2) Аргумент конструктора, наверное, const char* str? Иначе нельзя создать объект по константной строке. 3) При копировании C-строки настоятельно рекомендуется отводить n+1 символ (последний символ - под нуль-терминатор '\0', которым кончается любая C-строка). Прочитайте главу Вашего учебника про C-строки ещё раз. В остальном вроде вполне сносно. |
|
22.05.2013, 18:39 | #7 |
Пользователь
Регистрация: 25.01.2013
Сообщений: 17
|
а в моей реализации конструктора, принимающего строку текста, строка заканчивается нулевым байтом?или для этого что-то нужно дополнительно прописать?
Так? Код:
Последний раз редактировалось Stilet; 23.05.2013 в 08:07. |
22.05.2013, 18:57 | #8 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
Посмотрите описание функции strcpy() / strncpy(). И описание функции strlen(), внимательно. Далее, не забываем: данные - в private-секции, методы - в public-секции. Далее, конструктор String::String(char) не устанавливает значение n. Не хорошо. Далее, если массив имеет длину n+1, то последний элемент имеет индекс n, у Вас ошибка на единицу. |
|
22.05.2013, 19:13 | #9 | |
Форумчанин
Регистрация: 20.01.2013
Сообщений: 146
|
Код:
Цитата:
|
|
22.05.2013, 19:26 | #10 |
Пользователь
Регистрация: 25.01.2013
Сообщений: 17
|
Вроде исправил:
Код:
Последний раз редактировалось R'nhbyV; 22.05.2013 в 23:57. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") | funnyy | Помощь студентам | 3 | 17.10.2012 17:40 |
Создать класс "прямая", поля класса - координаты двух точек (x1,y1) и (x2,y2) // на C# | parol | Помощь студентам | 0 | 13.12.2011 14:00 |
Лабораторка C++: Создать класс "угол на полскости" и выполнить проверку работоспособности. | Zidane_13 | Помощь студентам | 0 | 13.01.2011 22:18 |
простенький класс "строка" на С++ | TopoRRR | Помощь студентам | 0 | 14.12.2009 22:31 |