0 / 0 / 0
Регистрация: 20.11.2020
Сообщений: 1
|
|
1 | |
Динамический многоугольник через классы20.11.2020, 13:44. Показов 370. Ответов 0
Всем привет, такую вот задали задачку:
Характеризуется количеством вершин. Поддерживает специфические методы: чтение и запись координат вершин; определение площади многоугольника. конструкторы: с одним аргументом - динамично выделяет память под заданную количество вершин; с двумя аргументами - динамично выделяет память под заданную количество вершин и инициализирует координаты всех вершин с заданного одномерного массива, сохраняет их в виде x 1, y 1, x 2, y 2, ...; с двумя аргументами - динамично выделяет память под заданную количество вершин и инициализирует координаты всех вершин значениями, которые соответствуют координатам правильного многоугольника, вписанного в круг с заданным во втором аргументе радиусом. Указали только что тип данных нужен координатный. Вот начал вроде что то делать: Код
#include <iostream> #include <stdlib.h> #include <math.h> #include <windows.h> #include <conio.h> class Array { int Number; float* Data; void NewMemory(int); void DelMemory(); public: Array(); Array(int); Array(int, float); Array(int, float); ~Array(); void Create(int); void Destroy(); void SquareArea(int, float); bool WritingCoordinates(int, float, float); float ReadingCoordinates(int); }; Array::Array() { // конструктор по умолчанию обнуляет содержимое переменных-свойств Number = 0; Data = NULL; } Array::Array(int Number) { // конструктор инициализации 1 вызывает метод динамического создания массива Create(Number); } Array::Array(int Number, float* Data) { // конструктор инициализации 1 вызывает метод динамического создания массива // и заполняет массив заданным значениям Create(Number); for (int i = 0; i < Number * 2; i++) this->Data[i] = Data[i]; } Array::Array(int Number, float Radius) { // конструктор инициализации 2 вызывает метод динамического создания массива // и заполняет массив заданным значениям Create(Number); } void Array::NewMemory(int Number) { this->Number = Number; Data = new float[Number * 2]; } void Array::DelMemory() { delete[] Data; Number = 0; Data = NULL; } void Array::Create(int Number) { if (Number) DelMemory(); NewMemory(Number); } void Array::Destroy() { if (Number) DelMemory(); } Array::~Array() { Destroy(); } void Array::SquareArea(int Number, float Radius) { // Определение площади многоугольника; if (Number != 0) { float Square; Square = 0.5 * Radius * Radius * Number * sin(360 / Number); } } float Array::ReadingCoordinates(int Pos) { // проверка, лежит ли в корректном диапазоне индекс элемента, который считывается if (Number && Pos >= 0 && Pos < Number * 2) return Data[Pos]; return 0; } bool Array::WritingCoordinates(int i, float x, float y) { // проверка существования массива if (Number) { // запись координат вершин; Data[i] = x; Data[i + 1] = y; return true; } return false; }
0
|
20.11.2020, 13:44 | |
Ответы с готовыми решениями:
0
Динамический многоугольник Ввести количество точек, получить многоугольник, закрасить многоугольник построчно. Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но через классы Переделать массив в динамический(классы) |
20.11.2020, 13:44 | |
20.11.2020, 13:44 | |
Помогаю со студенческими работами здесь
1
Классы, указатель на динамический массив Непонятная ошибка(классы и двумерный динамический массив) Как создать динамический список используя классы? Многоугольник через линии Создать базовый класс Многоугольник и наследовать от него правильный многоугольник. Многоугольник задан координатами своих вершин. Определить, является ли данный многоугольник выпуклым Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |