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

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

17.06.2019, 23:31. Показов 13843. Ответов 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
4204 / 2662 / 654
Регистрация: 23.09.2014
Сообщений: 9,046
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru