![]() |
|
Модераторы: bsa |
![]()
|
|
| Recev |
|
||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Создать иерархию классов : линия - прямоугольник - пирамида. Все классы должны содержать методы для фиксации и получения значений всех координат, а производные классы методы вычисления площади (прямоугольник), площади поверхности и объема (пирамида).
Вот что я набросал:
Здесь вроде все нормально но начались проблемы со следующим производным классом: прямоугольник
Помогите пожалуйста. Это сообщение отредактировал(а) Recev - 19.3.2011, 14:53 |
||||||||||||
|
|||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
пирамида не есть прямоугольник, который не есть линия.. а следовательно создать удачную иерархию очень сомнительно.. этот вопрос уже обсуждался не раз - поиск поможет.. |
|||
|
||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Я попросил помочь исправить код. Линия - часть прямоугольника, прямоугольник - часть правильной пирамиды.
Если такая тема обсуждалась, дайте ссылку. Это сообщение отредактировал(а) Recev - 19.3.2011, 19:00 |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вот именно - часть... и таких частей несколько.. а у Вас стоит :
что означает: "прямоугольник это линия, которая .. " ну так и помогаю.. подсказываю что выбрали не удачную модель, не позволяющую полноценно решить задачу.. предлагаете поискать за Вас ? |
||||||
|
|||||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Хорошо, какую модель предложите Вы?
Я искал, но ничего так и не нашел. Если Вам не тяжело - поищите. Это сообщение отредактировал(а) Recev - 19.3.2011, 20:54 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
сформулируйте задачу как можно более точно, чтоб стало понятно какая из моделей Вам больше подходит.. Добавлено через 3 минуты и 15 секунд погуглите на тему The Liskov Substitution Principle, там вроде на примере квадрата и прямоугольника разобран этот вопрос.. |
|||
|
||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Написал я какой-то бред но после того как пристроил туда последний класс - программа перестала работать =( не знаю почему.
Помогите исправить, все файлы во вложении. Присоединённый файл ( Кол-во скачиваний: 3 )
1.rar 4,00 Kb |
|||
|
||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
При написании пользовался книгой Дейтела "Как программировать на C++". страница 557
Присоединённый файл ( Кол-во скачиваний: 5 )
1.rar 4,00 Kb |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну так какую ошибку выдает компилятор то?
проект не такой большой чтоб его выкладывать архивом.. гораздо удобнее было выложить на онлайн-компиляторе, например, codepad.org или liveworkspace.org.. а еще лучше если бы выделили сомнительные моменты, и выложили бы только их.. Добавлено через 3 минуты и 1 секунду к разговору о наследовании.. зачем rect`у метод setLine ?
для rect`a достаточно двух точек (4 флоата) например верхний левый и нижний правый.. |
|||
|
||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
надо остальные страницы осилить, иначе ничего не выйдет иерархия отражает наследование. наследование выражает отношение "является", "работает как". например, "прямоугольник является геометрической фигурой". это означает, что все, верное в отношении геометрической фигуры, верно и для прямоугольника, например любую фигуру можно изобразить. у любой фигуры есть (или может быть задана) локальная система координат (или хотя бы базовая точка привязки). у классов-потомков появляются новые, более специфичные свойства. у прямоугольника есть ширина и высота. у произвольной фигуры (например, окружность) - нет. таким образом, линия, прямоугольник и пирамида не связаны отношениями наследования. но они могут являться частью одной иерархии, например:
а вот для рисования, скажем, прямоугольника, вполне уместно пользоваться рисованием линий, что-то вроде:
|
||||||
|
|||||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Компилятор ошибок не выдает, винда выдает ошибку типа "программа не правильно работает, искать решение в интернете?"
Ошибка вылетает тогда, когда программа доходит до того места где идет работа с piramidPtr. Задание по-другому делать нельзя, только так как я (точнее так препод сказал). |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
эта ошибка - обращение по неверному адресу памяти
зачем вот тут мы указателю на пирамиду присваиваем адрес прямоугольника? ужос а ку препода таки спроси про иерархию наследования и принцип "является" |
|||
|
||||
| Recev |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Затем чтобы сделать прямоугольник основанием пирамиды.
|
|||
|
||||
| Recev |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 18.10.2010 Репутация: нет Всего: нет |
Немного изменил программу по вашему совету (линия - диагональ), но с piramidPtr так ничего и не получается.
|
||||||||||
|
|||||||||||
| миг |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
а линия это часть точки? но у вас класс "линий" не стал наследовать класс "точек")).. вам легче было создать координаты точек в классе "линия", т.к. наследуются свойства класса, а не количество объектов(точек) этого класса.. --------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |