Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > Наследование |
Автор: Seifer 9.4.2006, 17:39 |
Суть темы такая: Описать базовый класс СТРОКА. Обязательные поля класса: указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки; значение типа int — хранит длину строки в байтах. Обязательные методы должны выполнять следующие действия: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор, принимающий в качестве параметра символ; конструктор копирования; получение длины строки; очистка строки (сделать строку пустой); деструктор. Описать производный от СТРОКА класс ДЕСЯТИЧНАЯ_СТРОКА. Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДЕСЯТИЧНАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число. Обязательные методы: конструктор без параметров; конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); конструктор копирования; деструктор; метод, определяющий, можно ли представить данное число в формате int; Переопределить следующие операции: присваивание (=); вычитание (–) — арифметическая разность строк; операция > — проверка на больше (по значению); операция < — проверка на меньше (по значению); Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов. Написать тестовую программу, которая: динамически выделяет массив указателей на базовый класс (4–6); в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений; для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей. Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса). Очень нужна помощь! От этого зависит моя судьба! Заранее благодарен. |
Автор: BreakPointMAN 9.4.2006, 19:30 |
Для таких вещей существует http://forum.vingrad.ru/index.php?showforum=142. |
Автор: Megamozg 9.4.2006, 19:30 |
Я знаю откуда ты взял задание, мож не пытаться я уже тут его постил, писали поможем, а потом забыли уже неделю ни ответа ни привета, вот сам теперь разбираюсь. Привет с курсов. |
Автор: Seifer 9.4.2006, 19:56 |
Давай его толкать в ЦП Я тут уже накопал немножко. Привет тебе с курсов тоже. Ты кто и у кого? ![]() |
Автор: MAKCim 9.4.2006, 19:58 | ||
я думаю, все писать никто не будет, в чем конкретно трудность? |
Автор: Seifer 9.4.2006, 20:12 |
собсно, трудности в следующих моментах: Момент1 Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДЕСЯТИЧНАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число. Момент2 Переопределить следующие операции: присваивание (=); вычитание (–) — арифметическая разность строк; операция > — проверка на больше (по значению); операция < — проверка на меньше (по значению); И момент3 Написать тестовую программу, которая: динамически выделяет массив указателей на базовый класс (4–6); в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений; для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей. Создание и удаление строки с помощью кострукторов и деструкторов я в целом понимаю. Интересует переопределение операций и запись условия в десятичной_строке. Динамическое выделение массива указателей и заполнение в режиме диалога просто не знаю. Вот основные моменты. |
Автор: _hunter 10.4.2006, 11:23 |
что-то мне кажется что приведенные моменты просто скопированны из задания. поэтому их пропустим... идем дальше что именно интересует? примеров перегрузки операторов что на форуме что в том же рихтере -- хоть засыпся тут непонятно. пиши подробнее опять же -- на форуме уже обсуждалось а это просто -- в цикле проходиш по всем элементам массива и показываеш форму ( или запрос в косоль ) |
Автор: Megamozg 10.4.2006, 16:11 |
То что тебе не понятно и еще кое что не понятно и нам, но такое задание дели и все тут. Более менее начинаю доганять как делать, но не пойму что должно быть в итоге, в чем суть программы и как написать последнюю часть задания для тестирования проги. |
Автор: _hunter 10.4.2006, 16:58 |
ну так уточни у преподавателя. и что непонятно с последней частью? |
Автор: MAKCim 10.4.2006, 18:03 | ||||||
|
Автор: Seifer 10.4.2006, 21:36 |
Всё таки в форуме рыться времени нету, поэтому прошу выложить динамическое выделение. |
Автор: Megamozg 11.4.2006, 14:39 |
Немного написал непонятны моменты: 1.В программе используются объекты типа string или массив символов char. 2.Какова роль указателя на char. 3.конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом); Что имеется ввиду Си-строка, как описать конец строки нулевым байтом в конструкторе. 4.Конструктор копирования. Имеется ввиду копирование посимвольно char или как. Помогите с этими моментами, остальное понял или пойму по ходу. |
Автор: Megamozg 12.4.2006, 02:16 |
Спасибо, щас попробую дописать. |
Автор: Megamozg 12.4.2006, 07:17 |
Так че-то получилось. Помогите написать тестовую прогу, я написал, но че-то не так, у меня без массива указателей, а как с ним незнаю. При вводе можно вводить наподобии +++---23 как от этого избавиться, чтобы только +12 или -12. И как правильно работать со знаковыми числами, т.е. ввели -12 и 22 и вычитаем их, у меня получается бред. И что значат последние два пункта: -Для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей. -Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса). Ну вообщем прога не на 100% но работает. Пожалуйста помогите с этими вопросами до завтра. |
Автор: Megamozg 12.4.2006, 08:58 |
И еще как проверить наличие свободной памяти для выделения строки. И как запретить ввод букв, я сделал, но по кривому, у меня не получилось. |
Автор: Megamozg 12.4.2006, 13:15 |
Прошу проверить и подправить прогу, завтра надо сдать. Весь материал нашел на форуме, все собрал, надо чуть доделать. Пожалуйста помогите. |
Автор: Seifer 12.4.2006, 15:08 |
Megamozg, выложи код по-новой, архив битый. |
Автор: Megamozg 12.4.2006, 19:37 |
Архив нормальный, токо проверил. выкладываю еще, те вопросы не решил нужна помощь, смотрите постом выше. Как проверить наличие динамически выделяемой памяти? |
Автор: Seifer 12.4.2006, 21:54 |
Может проверять на каждом шаге и сравнивать результаты? |
Автор: Megamozg 12.4.2006, 22:23 |
Вот вроде все поправил, все представления переделал, теперь все отлично. Непонятна все та же последняя часть задания, ну не получается, я не понимаю. Написать тестовую программу, которая: динамически выделяет массив указателей на базовый класс (4–6); в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений; для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей. Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса). И еще наверно надо сделать проверку при выделении памяти под динамические строки, тож не умею. Дописать надо чуть-чуть, но я не могу, а завтра сдавать, прошу срочно помочь, плиз. |
Автор: Seifer 12.4.2006, 22:44 |
Да ты не волнуйся, завтра сдадим, зачет получишь. Зинчик всё равно будет смотреть не на работоспособность, а на идею. У мя так на паскале в прошлом году было - прога не работала из-за мелких знаков (;), препод посмотрела, я ей всё объяснил. Зачет. |
Автор: Megamozg 13.4.2006, 07:28 |
Да блин самому жалко, что все подобрал и написал, а в самом конце запор. |
Автор: Seifer 13.4.2006, 08:57 |
У неё процентов 85-90 завершенности - более чем достаточно |
Автор: Megamozg 13.4.2006, 19:52 |
Все сам написал и сдал. На тестовую прогу с массивом указателей препод забил, просто проверил работу конструкторов и функций. Всем кто помогал спасибо, если надо могу выложить последний вариант. Вопрос решен. |
Автор: Seifer 14.4.2006, 13:30 |
Так, погоди, а кто у тебя препод и во сколько занятия начинаются? А програмку с сорцами выложи, посмотрим |