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

Динамический многоугольник через классы

20.11.2020, 13:44. Показов 370. Ответов 0

Author24 — интернет-сервис помощи студентам
Всем привет, такую вот задали задачку:
Характеризуется количеством вершин.
Поддерживает специфические методы:
чтение и запись координат вершин;
определение площади многоугольника.
конструкторы:
с одним аргументом - динамично выделяет память под заданную
количество вершин;
с двумя аргументами - динамично выделяет память под заданную
количество вершин и инициализирует координаты всех вершин с
заданного одномерного массива, сохраняет их в виде 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2020, 13:44
Ответы с готовыми решениями:

Динамический многоугольник
динамический многоугольник Характеризуется количеством вершин . Поддерживает специфические...

Ввести количество точек, получить многоугольник, закрасить многоугольник построчно.
Здравствуйте, есть программа написанная на С++ Builder, (см архив) у меня почему то она виснет(...

Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но через классы
Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но используя...

Переделать массив в динамический(классы)
Сделал программу с перегрузкой операторов, но со статическим массивом. Переделайте, пожалуйста в...

0
20.11.2020, 13:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2020, 13:44
Помогаю со студенческими работами здесь

Классы, указатель на динамический массив
Здравствуйте, Подскажите пожалуйста, в чем моя ошибка, у меня есть класс Треугольник, на...

Непонятная ошибка(классы и двумерный динамический массив)
Всем привет. Сегодня писал программу для двумерного динамического массива. Должны меняться значения...

Как создать динамический список используя классы?
доброго времени суток. препод попросил составить лабу ему чтоб был реализован динамический список,...

Многоугольник через линии
Здравствуйте! Мне в программе необходимо добавить фигуру &quot;многоугольник&quot;, которая рисоваться...

Создать базовый класс Многоугольник и наследовать от него правильный многоугольник.
Нужна помощь. В вузе практика, осталась последняя задача. Помогите кодом. ТЗ: Создать базовый...

Многоугольник задан координатами своих вершин. Определить, является ли данный многоугольник выпуклым
Написать программу которая определяет является ли многоугольник выпуклым


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru