2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
|
1 | |
Реализовать иерархию классов для работы с геометрическими телами30.05.2017, 06:55. Показов 2527. Ответов 6
Метки нет (Все метки)
Помогите, пожалуйста, выполнить такую задачу, мучаюсь не первый день с ней. Вот текст задачи:
Реализовать иерархию классов для работы с геометрическими телами. Должны быть реализованы как минимум три конкретных (неабстракных) класса «Шар», «Цилиндр», «Конус» и базовый класс. По возмож- ности реализовать также класс «Эллипсоид». Конкретные классы должны содержать данные, необходимые для задания формы тел (но не их положения в пространстве). Должны быть реализованы необходимые конструкторы и деструкторы, методы для вычисления объема и площади поверхности тел, а также метод, позволяющий увеличить размеры тела в заданное число раз. Кроме того, должен быть перегружен оператор вывода в поток, так что при выводе тела можно было бы получить, например, следующую информацию: Ball ( r = 5) Cylinder ( r = 3 , ...) Cone ( r = 2 , ...) Используя построенную иерархию, напишите следующую тестовую программу. Создайте массив тел и заполните его случайными телами любых размеров. Выведите информацию о телах на экран. Выведите значения их площадей поверхности и объемов. Увеличьте все тела в заданное число раз и снова выведите информацию о телах, их площадях поверхности и объемах. Сам честно пытался написать, код получился огроменный. Но и туча ошибок синтаксических и похоже с раздельной компиляции. В случае если потребуется код, скажите через что мне его прислать в комментарий (что используется для этого? Я видел на этом форуме коды с пронумерованными строками).
0
|
30.05.2017, 06:55 | |
Ответы с готовыми решениями:
6
Реализовать иерархию классов для моделирования работы магазина, продающего колоды карт (по 36 и 52 карты) Создать иерархию классов для работы с комплексными числами Как можно организовать иерархию классов для работы с графами Реализовать иерархию классов |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
|
|
30.05.2017, 07:04 | 2 |
Не ленитесь пользоваться поиском.
Эта тема очень модная в этом разделе. Виртуальные классы Класс для работы с геометрическими фигурами
1
|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
|
30.05.2017, 07:08 [ТС] | 3 |
Скажите, пожалуйста, а с помощью чего на этом форуме вот так вот в комментарий вставляют код Реализовать иерархию классов Точка - Линия - Круг - 1ый комментарий: в нем код из 177 строк.
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
|
|
30.05.2017, 07:50 | 4 |
выделить код и на панели сверху нажать кнопочку со значком с++
1
|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
|
30.05.2017, 19:47 [ТС] | 5 |
Помогите пожалуйста. У меня такая ситуация. Программа не работает из-за раздельной компиляции. Вот что у меня в проге:
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 | 6 | |||||
1
|
2 / 2 / 0
Регистрация: 03.05.2016
Сообщений: 141
|
||||||
30.05.2017, 22:18 [ТС] | 7 | |||||
а как мне тогда исправить сию ситуацию? Разве есть разница между тем, что я и Вы написали ?
Добавлено через 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 | |
30.05.2017, 22:18 | |
Помогаю со студенческими работами здесь
7
Реализовать иерархию классов Реализовать иерархию классов Реализовать иерархию классов Реализовать иерархию классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |