Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование, Очень нужно до четверга! Помогите! 
:(
    Опции темы
Seifer
Дата 9.4.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Суть темы такая:

Описать базовый класс СТРОКА.
Обязательные поля класса:
 указатель на char — хранит адрес динамически выделенной памяти для размещения символов строки;
 значение типа int — хранит длину строки в байтах.
Обязательные методы должны выполнять следующие действия:
 конструктор без параметров;
 конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом);
 конструктор, принимающий в качестве параметра символ;
 конструктор копирования;
 получение длины строки;
 очистка строки (сделать строку пустой);
 деструктор.
Описать производный от СТРОКА класс ДЕСЯТИЧНАЯ_СТРОКА.
Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДЕСЯТИЧНАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число.
Обязательные методы:
 конструктор без параметров;
 конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом);
 конструктор копирования;
 деструктор;
 метод, определяющий, можно ли представить данное число в формате int;
Переопределить следующие операции:
 присваивание (=);
 вычитание (–) — арифметическая разность строк;
 операция > — проверка на больше (по значению);
 операция < — проверка на меньше (по значению);
Разработчик вправе вводить любое (с обоснованием необходимости) число дополнительных полей и методов.
Написать тестовую программу, которая:
 динамически выделяет массив указателей на базовый класс (4–6);
 в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений;
 для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей.
Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).


Очень нужна помощь! От этого зависит моя судьба! Заранее благодарен.


PM MAIL   Вверх
BreakPointMAN
Дата 9.4.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 2
Всего: 24



Для таких вещей существует Центр помощи.


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Megamozg
Дата 9.4.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Я знаю откуда ты взял задание, мож не пытаться я уже тут его постил, писали поможем, а потом забыли уже неделю ни ответа ни привета, вот сам теперь разбираюсь.
Привет с курсов.
PM MAIL   Вверх
Seifer
Дата 9.4.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Давай его толкать в ЦП
Я тут уже накопал немножко. Привет тебе с курсов тоже. Ты кто и у кого? smile
PM MAIL   Вверх
MAKCim
Дата 9.4.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Цитата

Я знаю откуда ты взял задание, мож не пытаться я уже тут его постил, писали поможем, а потом забыли уже неделю ни ответа ни привета, вот сам теперь разбираюсь.

я думаю, все писать никто не будет, в чем конкретно трудность?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Seifer
Дата 9.4.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



собсно, трудности в следующих моментах:

Момент1
Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДЕСЯТИЧНАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число.

Момент2
Переопределить следующие операции:
 присваивание (=);
 вычитание (–) — арифметическая разность строк;
 операция > — проверка на больше (по значению);
 операция < — проверка на меньше (по значению);

И момент3
Написать тестовую программу, которая:
 динамически выделяет массив указателей на базовый класс (4–6);
 в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений;
 для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей.



Создание и удаление строки с помощью кострукторов и деструкторов я в целом понимаю.
Интересует переопределение операций и запись условия в десятичной_строке. Динамическое выделение массива указателей и заполнение в режиме диалога просто не знаю.
Вот основные моменты.
PM MAIL   Вверх
_hunter
Дата 10.4.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



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

Цитата(Seifer @ 9.4.2006, 20:12 Найти цитируемый пост)
Интересует переопределение операций

что именно интересует? примеров перегрузки операторов что на форуме что в том же рихтере -- хоть засыпся
Цитата(Seifer @ 9.4.2006, 20:12 Найти цитируемый пост)
запись условия в десятичной_строке

тут непонятно. пиши подробнее
Цитата(Seifer @ 9.4.2006, 20:12 Найти цитируемый пост)
Динамическое выделение массива

опять же -- на форуме уже обсуждалось

Цитата(Seifer @ 9.4.2006, 20:12 Найти цитируемый пост)
заполнение в режиме диалога

а это просто -- в цикле проходиш по всем элементам массива и показываеш форму ( или запрос в косоль )



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Megamozg
Дата 10.4.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



То что тебе не понятно и еще кое что не понятно и нам, но такое задание дели и все тут.
Более менее начинаю доганять как делать, но не пойму что должно быть в итоге, в чем суть программы и как написать последнюю часть задания для тестирования проги.
PM MAIL   Вверх
_hunter
Дата 10.4.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



ну так уточни у преподавателя.
и что непонятно с последней частью?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
MAKCim
Дата 10.4.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Цитата

Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, ДЕСЯТИЧНАЯ_СТРОКА принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число.

Код

template<class Sy_> class DecimalString
    : public String<Sy_>
{
private:
    typedef String<Sy_> Base_;

    bool range(const Sy_& obj) const
        {return obj>='0' && obj<='9';}

    bool sym(const Sy_& obj) const
        {return obj=='+' || obj=='-';}

    bool check() const
    {
        typename Base_::const_iterator i=Base_::begin();
        bool mask=true;
        while (mask && i!=Base_::end())
        {
            mask=range(*i) || (i==Base_::begin() && sym(*i));
            i++;
        }
        return mask;    
    }
...
public:
    operator int() const
        {...}   //перевод в число
};
Цитата





--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Seifer
Дата 10.4.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Всё таки в форуме рыться времени нету, поэтому прошу выложить динамическое выделение.
PM MAIL   Вверх
Megamozg
Дата 11.4.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Немного написал непонятны моменты:
1.В программе используются объекты типа string или массив символов char.
2.Какова роль указателя на char.
3.конструктор, принимающий в качестве параметра Си-строку (заканчивается нулевым байтом);
Что имеется ввиду Си-строка, как описать конец строки нулевым байтом в конструкторе.
4.Конструктор копирования.
Имеется ввиду копирование посимвольно char или как.

Помогите с этими моментами, остальное понял или пойму по ходу.
PM MAIL   Вверх
Fixin
Дата 11.4.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



Цитата(Megamozg @ 11.4.2006, 14:39 Найти цитируемый пост)
1.В программе используются объекты типа string или массив символов char.

Массив чаров,
Цитата(Megamozg @ 11.4.2006, 14:39 Найти цитируемый пост)
2.Какова роль указателя на char.

указывает на начало сишной строки (массива чаров).
Цитата(Megamozg @ 11.4.2006, 14:39 Найти цитируемый пост)
3.конструктор, принимающий в качестве параметра Си-строку

Код

char a[] = "la-la-la\0";
char *b = a;


Цитата(Megamozg @ 11.4.2006, 14:39 Найти цитируемый пост)
4.Конструктор копирования.

Это относится к теории классов C++. Прикол в создании класса-копии. Этого я не знаю... помочь не могу.
PM MAIL ICQ   Вверх
Megamozg
Дата 12.4.2006, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Спасибо, щас попробую дописать.
PM MAIL   Вверх
Megamozg
Дата 12.4.2006, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Так че-то получилось.
Помогите написать тестовую прогу, я написал, но че-то не так, у меня без массива указателей, а как с ним незнаю.
При вводе можно вводить наподобии +++---23 как от этого избавиться, чтобы только +12 или -12.
И как правильно работать со знаковыми числами, т.е. ввели -12 и 22 и вычитаем их, у меня получается бред.
И что значат последние два пункта:

-Для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей.

-Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).

Ну вообщем прога не на 100% но работает.
Пожалуйста помогите с этими вопросами до завтра.
PM MAIL   Вверх
Megamozg
Дата 12.4.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



И еще как проверить наличие свободной памяти для выделения строки.
И как запретить ввод букв, я сделал, но по кривому, у меня не получилось.
PM MAIL   Вверх
Megamozg
Дата 12.4.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Прошу проверить и подправить прогу, завтра надо сдать.
Весь материал нашел на форуме, все собрал, надо чуть доделать.
Пожалуйста помогите.

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  Zadanie.rar 15,20 Kb
PM MAIL   Вверх
Seifer
Дата 12.4.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Megamozg, выложи код по-новой, архив битый.

Это сообщение отредактировал(а) Seifer - 12.4.2006, 15:13
PM MAIL   Вверх
Megamozg
Дата 12.4.2006, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Архив нормальный, токо проверил.
выкладываю еще, те вопросы не решил нужна помощь, смотрите постом выше.

Как проверить наличие динамически выделяемой памяти?

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  Zadanie.zip 12,05 Kb
PM MAIL   Вверх
Seifer
Дата 12.4.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Может проверять на каждом шаге и сравнивать результаты?
PM MAIL   Вверх
Megamozg
Дата 12.4.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Вот вроде все поправил, все представления переделал, теперь все отлично.
Непонятна все та же последняя часть задания, ну не получается, я не понимаю.

Написать тестовую программу, которая:

 динамически выделяет массив указателей на базовый класс (4–6);
 в режиме диалога заполняет этот массив указателями на производные классы, при этом экземпляры производных классов создаются динамически с заданием начальных значений;
 для созданных экземпляров производных классов выполняет проверку всех разработанных методов с выводом исходных данных и результатов на дисплей.

Для конструкторов копирования каждого класса предусмотреть диагностическую печать количества его вызовов в определенное место дисплея (рекомендуется использовать статические члены класса).



И еще наверно надо сделать проверку при выделении памяти под динамические строки, тож не умею.

Дописать надо чуть-чуть, но я не могу, а завтра сдавать, прошу срочно помочь, плиз.


Присоединённый файл ( Кол-во скачиваний: 40 )
Присоединённый файл  Zadanie.zip 12,51 Kb
PM MAIL   Вверх
Seifer
Дата 12.4.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Да ты не волнуйся, завтра сдадим, зачет получишь. Зинчик всё равно будет смотреть не на работоспособность, а на идею. У мя так на паскале в прошлом году было - прога не работала из-за мелких знаков (;), препод посмотрела, я ей всё объяснил. Зачет.
PM MAIL   Вверх
Megamozg
Дата 13.4.2006, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Да блин самому жалко, что все подобрал и написал, а в самом конце запор.
PM MAIL   Вверх
Seifer
Дата 13.4.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



У неё процентов 85-90 завершенности - более чем достаточно
PM MAIL   Вверх
Megamozg
Дата 13.4.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Все сам написал и сдал.
На тестовую прогу с массивом указателей препод забил, просто проверил работу конструкторов и функций.

Всем кто помогал спасибо, если надо могу выложить последний вариант.
Вопрос решен.
PM MAIL   Вверх
Seifer
Дата 14.4.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 9.4.2006

Репутация: нет
Всего: нет



Так, погоди, а кто у тебя препод и во сколько занятия начинаются?
А програмку с сорцами выложи, посмотрим

Это сообщение отредактировал(а) Seifer - 14.4.2006, 13:34
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1398 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.