|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
|
Реализовать иерархию классов для работы с геометрическими телами30.05.2017, 06:55. Показов 2823. Ответов 6
Метки нет (Все метки)
Помогите, пожалуйста, выполнить такую задачу, мучаюсь не первый день с ней. Вот текст задачи:
Реализовать иерархию классов для работы с геометрическими телами. Должны быть реализованы как минимум три конкретных (неабстракных) класса «Шар», «Цилиндр», «Конус» и базовый класс. По возмож- ности реализовать также класс «Эллипсоид». Конкретные классы должны содержать данные, необходимые для задания формы тел (но не их положения в пространстве). Должны быть реализованы необходимые конструкторы и деструкторы, методы для вычисления объема и площади поверхности тел, а также метод, позволяющий увеличить размеры тела в заданное число раз. Кроме того, должен быть перегружен оператор вывода в поток, так что при выводе тела можно было бы получить, например, следующую информацию: Ball ( r = 5) Cylinder ( r = 3 , ...) Cone ( r = 2 , ...) Используя построенную иерархию, напишите следующую тестовую программу. Создайте массив тел и заполните его случайными телами любых размеров. Выведите информацию о телах на экран. Выведите значения их площадей поверхности и объемов. Увеличьте все тела в заданное число раз и снова выведите информацию о телах, их площадях поверхности и объемах. Сам честно пытался написать, код получился огроменный. Но и туча ошибок синтаксических и похоже с раздельной компиляции. В случае если потребуется код, скажите через что мне его прислать в комментарий (что используется для этого? Я видел на этом форуме коды с пронумерованными строками).
0
|
|
| 30.05.2017, 06:55 | |
|
Ответы с готовыми решениями:
6
Реализовать иерархию классов для моделирования работы магазина, продающего колоды карт (по 36 и 52 карты) Создать иерархию классов для работы с комплексными числами Как можно организовать иерархию классов для работы с графами |
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
|
|
| 30.05.2017, 07:04 | |
|
Не ленитесь пользоваться поиском.
Эта тема очень модная в этом разделе. Виртуальные классы Класс для работы с геометрическими фигурами
1
|
|
|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
|
| 30.05.2017, 07:08 [ТС] | |
|
Скажите, пожалуйста, а с помощью чего на этом форуме вот так вот в комментарий вставляют код Реализовать иерархию классов Точка - Линия - Круг - 1ый комментарий: в нем код из 177 строк.
0
|
|
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
|
|
| 30.05.2017, 07:50 | |
|
выделить код и на панели сверху нажать кнопочку со значком с++
1
|
|
|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
|
| 30.05.2017, 19:47 [ТС] | |
|
Помогите пожалуйста. У меня такая ситуация. Программа не работает из-за раздельной компиляции. Вот что у меня в проге:
class Figure - предок с чисто виртуальной функцией, class Ellipsoid, Ball, Cylinder, Cone - наследники (public). Созданы файлы с директивами макрозащиты соответственно Ellipsoid.h, Ball.h, Cylinder.h, Cone.h - заголовочные файлы. Ellipsoid.cpp, Ball.cpp, Cylinder.cpp, Cone.cpp - файлы с реализацией, а main5.cpp - главный файл (где есть int main()). Как мне правильно подключить файлы к main5.cpp, чтобы программа собралась? Компилятор DevC++ ругается и выдает 4 сообщения: 1)Cannot allocate an object of abstract type 'Ellipsoid'. Остальные - аналогично. Я решил сделать то же самое без раздельной компиляяции, то есть все в один файл запихнуть, все получилось. Почему оператор возращает адрес а не значение по нему? В случае, если заменить * на &, то ничего не изменится Добавлено через 24 секунды Оператор вывода имеет следующий прототип и реализацию: std::ostream& operator<<(std::ostream & os, const Ellipsoid & obj) { return os << "minor axis a, b, c" << obj.a << "," << obj.b << "," << obj.c << " " << "Volume: " << obj.Volume() << " " << "Area: " << obj.Area() <<"\n"; } в мейне выглядит у меня все так: int main () { double k = 2.0; Figure *f[4] = {new Ellipsoid (1, 2, 3), new Ball(1), new Cylinder(1, 1), new Cone(1, 1)}; cout << *f[0] << "\n"; system("pause"); } Почему оператор возращает адрес а не значение по нему? В случае, если заменить * на &, то ничего не изменитс
0
|
|
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|||||||
| 30.05.2017, 19:50 | |||||||
1
|
|||||||
|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
||||||
| 30.05.2017, 22:18 [ТС] | ||||||
|
а как мне тогда исправить сию ситуацию? Разве есть разница между тем, что я и Вы написали ?
Добавлено через 36 минут Результат таков: cout << &f[0] << "," << f[0] <<"\n"; 0x23fd50, 0xa51370 А тут ошибка cout << *f[0] << "\n"; - ошибка. Вот ее текст: 188 39 C:\Users\Alexander\Desktop\ôèçôàê\ÝÂÌ\Ñå ìåñòð 2\task21212\Untitled4.cpp [Error] no match for 'operator<<' in '(& std::operator<< <std::char_traits<char> >((* & std::cout.std::basic_ostream<_CharT, _Traits>::operator<< <char, std::char_traits<char> >(((const void*)(& f[0])))), ((const char*)",")))->std::basic_ostream<_CharT, _Traits>::operator<< <char, std::char_traits<char> >(((const void*)f[0])) << * f[0]'
0
|
||||||
| 30.05.2017, 22:18 | |
|
Помогаю со студенческими работами здесь
7
Реализовать иерархию классов Реализовать иерархию классов
Реализовать иерархию классов Реализовать иерархию классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|