Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 21:53   #1
alex_8
Пользователь
 
Регистрация: 18.10.2009
Сообщений: 30
По умолчанию Динамический многоугольник(ООП). Конструкторы.

Помогите пожалуйста с задачей.

Условие задачи

Характеризуется количеством вершин.
Поддерживает специфические методы:
- Чтение и запись координат вершин;
- Определение площади многоугольника.
Конструкторы:
- С одним аргументом - динамически выделяет память под заданное количество вершин;
- С двумя аргументами - динамически выделяет память под заданное количество вершин и инициализирует координаты всех вершин из заданного одномерного массива, который хранит их в виде x1, y1, x2, y2, ...;
- С двумя аргументами - динамически выделяет память под заданное количество вершин и инициализирует координаты всех вершин значениями, которые соответствуют координатам правильного многоугольника, вписанного в окружность с заданным во втором аргументе радиусом.

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

Мои наработки
Код:
#include <conio.h>
#include <math.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;
}
ICQ 422605533

Последний раз редактировалось alex_8; 01.12.2010 в 16:16.
alex_8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звёздчатый многоугольник Alex_FF Помощь студентам 0 30.12.2009 01:24
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55
Си - Решение задачи про многоугольник и точку andreas Помощь студентам 1 27.05.2008 19:29