Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/65: Рейтинг темы: голосов - 65, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 19

Классы геометрических фигур

17.06.2019, 23:31. Показов 14005. Ответов 26

Студворк — интернет-сервис помощи студентам
Всем привет! У меня возникли сложности с пониманием и реализацией задания.

Имеется задание (надеюсь перевести не составит труда):

Design a small program in C++ that would implement the following:
1. Support a few types of 3D geometric curves – circles, ellipses and 3D helixes. (Simplified
definitions are below). Each curve should be able to return a 3D point and a first derivative (3D
vector) per parameter t along the curve.
2. Populate a container (e.g. vector or list) of objects of these types created in random manner with
random parameters. Ensure that the container will contain objects of all supported types.
3. Print coordinates of points and derivatives of all curves in the container at t=PI/4.
4. Populate a second container that would contain only circles from the first container. Make sure the
second container shares (i.e. not clones) circles of the first one, e.g. via pointers.
5. Sort the second container in the ascending order of circles’ radii. That is, the first element has the
smallest radius, the last - the greatest.
6. Compute the total sum of radii of all curves in the second container.
Additional optional requirements:
7. Split implementation into a library of curves and executable which uses API of this library.
Expectations to the implementation:
1. The implementation must use virtual methods.
2. Has neither explicit memory deallocation nor memory leaks.
3. Curves must be physically correct (e.g. radii must be positive).
4. Containers and sorting must be implemented using STL (C++ Standard Template Library).
5. The implementation may use constructs of C++11 or higher.
6. The code must compile with any compiler of your choice (gcc, Visual C++, etc).
7. The result should be sent via email or posted on github. The delivery must contain source code only
(no compiled binaries): *.h and *.cpp files and project files, so that we can compile the result by
ourselves.
Curve definitions:
- All curves are parametrically defined, i.e. a point is calculated using some C(t) formula.
- Circle is planar in the plane XoY (i.e. all Z-coordinates are 0) and is defined by its radius.
- Ellipse is planar in the plane XoY and is defined by its two radii, along X and Y axes.
- Helix is spatial and is defined by its radius and step (see the figure below). It takes 2 * PI in
parametric space to make a round, i.e. any point on helix satisfies the condition C(t + 2*PI) = C(t) +
{0, 0, step}.

Прошу помощи опытных людей растолковать нюансы разработки данной программы, такие как:
-Каждая кривая должна иметь возможность возвращать 3D-точку и первую производную (3D
вектор) по параметру t вдоль кривой;
-Заполните контейнер (например, вектор или список) объектами этих типов, созданных случайным образом с помощью
случайных параметров. Убедиться, что контейнер будет содержать объекты всех поддерживаемых типов.

Соответственно появился довольно смешной вопрос:
Как заполнить контейнер, например вектор, объектами всех поддерживаемых типов (я так понял окружность, элипс, спираль)?
Как заполнить контейнер случайным образом?
и др.

Возможно кто-то встречал подобные задачи и есть какой либо пример. Примеры Классов окружность, элипс, спираль.

На работу выделено время - 7 дней. Очень прошу дать какую-либо информацию. Задание очень важное для меня.

Если есть дополнительные вопросы по задаче, прошу - задавайте. Пока что каких-либо наработок нет, когда сделаю хоть что-нибудь, обязательно выложу сюда.

Спасибо за внимание!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2019, 23:31
Ответы с готовыми решениями:

Иерархия геометрических фигур
Проблема с классами, никак не могу из за этого написать последнюю прогу... Помогуте если не сложно Создайте простую иерархию...

Масштабирование геометрических фигур
Было задание: Построить систему классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Предусмотреть методы...

Вывод геометрических фигур
Привет всем! Такая проблема: С треугольниками разобрался- могу выводить с помощю цыклов разные и в разных ракурсах. Вот код: #include...

26
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
20.06.2019, 22:00
Студворк — интернет-сервис помощи студентам
zayats80888,
Цитата Сообщение от zayats80888 Посмотреть сообщение
virtual Point3D curve_point(double t) const = 0; // точка кривой по параметру t
ну, правда же, просто мандец
такие комментарии ваще не нужны!!!
они ни о чем!

типа:
C++
1
i++; // Увеличить величину i на 1.
такую хрень код должен сам себя документировать.
Самый лучший комментарий это расставить по коду пункты задания(с полным их содержанием) , имхо...
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
20.06.2019, 22:03
Цитата Сообщение от XLAT Посмотреть сообщение
ну, правда же, просто мандец
XLAT, грамотное комментирование кода - это тоже искусство, которым из-за лени(а значит отсутствия практики) я наверное никогда не овладею
1
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 19
22.06.2019, 13:19  [ТС]
Добрый день!

zayats80888, спасибо большое за такую помощь! Вашу программу я изучил и сделал свою версию.

Единственное что не понял, так это как происходит сортировка и можно ли сделать альтернативную версию сортировки?

В целом же проблему решил и вопросов у меня не осталось.

Спасибо большое за уделённое данной теме внимание!

Добавлено через 5 минут
По поводу сортировки:

Естественно я понимаю что используете sort(), и соответственно компаратор. пробовал сделать что-то подобное и не получается у меня. Постоянно ошибки либо ничего не работает.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
22.06.2019, 13:22
Лучший ответ Сообщение было отмечено Кирилл2738 как решение

Решение

Цитата Сообщение от Кирилл2738 Посмотреть сообщение
Единственное что не понял, так это как происходит сортировка и можно ли сделать альтернативную версию сортировки?
Сортировка с использованием STL алгоритма std::sort, как и требовалось в задании. Почитать можно тут https://ru.cppreference.com/w/cpp/algorithm/sort

Добавлено через 55 секунд
Цитата Сообщение от Кирилл2738 Посмотреть сообщение
Постоянно ошибки либо ничего не работает.
Покажите ваш код, тогда можно будет помочь
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 19
22.06.2019, 13:33  [ТС]
Всё! Разобрался, большое спасибо за ответ!
0
0 / 0 / 0
Регистрация: 13.03.2016
Сообщений: 19
24.06.2019, 18:54  [ТС]
zayats80888, Добрый день! Извините, что снова поднимаю тему, но возник ещё один вопрос.

Имеется одно требование к программе - "Не имеет ни явного освобождения памяти, ни утечек памяти" , нельзя использовать явного удаления указателей (delete). Отсюда и сам вопрос, а как в вашем коде осуществляется освобождение памяти? Потому в моём экземпляре присутствуют утечки. Думал по поводу clear(), но не уверен решит ли это проблему.

Заранее спасибо!

Добавлено через 1 минуту
Конечно вопрос выше, не конкретно одному человеку. Буду рад любым ответам!
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.06.2019, 19:01
Цитата Сообщение от Кирилл2738 Посмотреть сообщение
Отсюда и сам вопрос, а как в вашем коде осуществляется освобождение памяти?
С использованием умных указателей из STL - std::shared_ptr<T>

Добавлено через 2 минуты
Ссылки на использованные средства:
https://en.cppreference.com/w/... shared_ptr
https://en.cppreference.com/w/cpp/language/typeid
https://en.cppreference.com/w/... inter_cast

Добавлено через 3 минуты

Не по теме:

Кирилл2738, кстати я на форум скинул код, где спираль коническая, по ссылке на онлайн компилятор код правильный, с цилиндрической спиралью(отличие только в классе Helix3D, это я так, на всякий случай :))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2019, 19:01

HELP!!! движение геометрических фигур
Нужна помощь в написании программы движения круга на экране хотя бы чтоб двигался туда сюда по одной линии, использование методов...

Иерархия геометрических фигур в ООП
Здравствуйте уважаемые формучани, нужна ваша помощь ибо я уже не знаю что делать. В общем задание построить иерархию геометрических фигур...

Вычисление площадей геометрических фигур
Программа на языке C++. Вводятся длины сторон прямоугольника, найти его площадь и периметр. Эта программа находит площадь и периметр....

Графика - построение геометрических фигур
Я что-то вообще не могу понять, как выполнять это задание. Считать данные не проблема, а как построить да ещё и с заданными углами...

Вывод на экран геометрических фигур
Дали курсач. Задание: разработать программу, обеспечивающую изображение на экране дисплея определенного набора плоских и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru